国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++使用string的大數乘法運算(3)

2020-01-26 13:24:31
字體:
來源:轉載
供稿:網友

本次項目目標:使用C++完成對于大數的乘法運算,供大家參考,具體內容如下

項目要點

1.大數指的是遠超long long int的數據

2.將大數用矩陣進行存儲,并通過矩陣實現運算

3.本人采用字符串進行存儲,應注意char的特點

比如:char a=161;

cout<<(int)a;

此時會輸出-95,而不是161,char類型首個比特位是作為正負號的

乘法,此處為整數乘法,正整數,負整數,0均可,主要思想就是乘法的筆算方法

運行截圖及代碼如下:

#include<iostream>#include<string>#include<algorithm>using namespace std;#define n 10string dezero(string a)//用來去掉正數前面的0,也就是說可以輸入000001類似這樣的數字{ long int i; for(i=0;i<a.length();i++) { if(a.at(i)>48) break; } if(i==a.length()) return "0"; a.erase(0,i); return a;}string multiply(string a,string b)//整數{ long int i,j,k,yao=0,kai; string c1,c2; string c3=a+b; if(a.at(0)=='-') { a.erase(0,1); yao++; } if(b.at(0)=='-') { b.erase(0,1); yao++; } a=dezero(a); b=dezero(b); if(a.at(0)==48||b.at(0)==48) return "0"; if(a.length()>b.length()) { c1=a; c2=b; } else { c1=b; c2=a; } reverse(c1.begin(),c1.end()); reverse(c2.begin(),c2.end()); for(i=0;i<c2.length();i++) { if(c2.at(i)>=48&&c2.at(i)<=57) c2.at(i)-=48; if(c2.at(i)>=97&&c2.at(i)<=122) c2.at(i)-=87; } for(i=0;i<c1.length();i++) { if(c1.at(i)>=48&&c1.at(i)<=57) c1.at(i)-=48; if(c1.at(i)>=97&&c1.at(i)<=122) c1.at(i)-=87; } for(i=0;i<c3.length();i++) c3.at(i)=0; for(i=0;i<c2.length();i++) { for(j=0;j<c1.length();j++) { kai=c2.at(i)*c1.at(j); c3.at(i+j+1)+=kai/n; c3.at(i+j)+=kai%n; for(k=i+j;k<c3.length()-1;k++) { if(c3.at(k)>=n)  {  c3.at(k+1)+=c3.at(k)/n;  c3.at(k)=c3.at(k)%n; } else {  break; } } } } for(i=c3.length()-1;i>=0;i--) { if(c3.at(i)>0) break; } c3.erase(i+1,c3.length()); for(i=0;i<c3.length();i++) { if(c3.at(i)>=10) c3.at(i)+=87; if(c3.at(i)<10) c3.at(i)+=48; } reverse(c3.begin(),c3.end()); if(yao==1) c3="-"+c3; return c3;}int main(){ string a,b; while(cout<<"input:"&&cin>>a>>b) { cout<<"output:"<<multiply(a,b)<<endl; } return 0;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石嘴山市| 田东县| 丹江口市| 中超| 泰安市| 望城县| 张家港市| 东乡族自治县| 古蔺县| 南靖县| 海口市| 汝阳县| 涞水县| 斗六市| 车险| 阳原县| 静安区| 富民县| 堆龙德庆县| 松阳县| 彭州市| 佛教| 屯门区| 安远县| 延安市| 沁阳市| 松原市| 土默特右旗| 仁化县| 林口县| 绍兴市| 北辰区| 桑植县| 罗平县| 清徐县| 鄂托克前旗| 洛阳市| 黄浦区| 东山县| 盘锦市| 翁牛特旗|