hdu 1002大数相加
发布时间:2020-12-14 03:34:52 所属栏目:大数据 来源:网络整理
导读:大数相加问题:由于数的长度过大,一般的数据类型根本存不了,所以这里用到了用数组模拟大数,从而进行相加的办法解决。 /preppre name="code" class="cpp"#includestdio.h#includeiostream#includestring#includealgorithmusing namespace std;string add(s
大数相加问题:由于数的长度过大,一般的数据类型根本存不了,所以这里用到了用数组模拟大数,从而进行相加的办法解决。
</pre><p><pre name="code" class="cpp">#include<stdio.h> #include<iostream> #include<string> #include<algorithm> using namespace std; string add(string st1,string st2) { if(st1.size()<st2.size()) //判断哪个长 { string stemp=st1; st1=st2; st2=stemp; } reverse(st1.begin(),st1.end()); //将string类st1,st2逆转顺序 reverse(st2.begin(),st2.end()); int len1,len2; len1=st1.length(); //计算各自的长度 len2=st2.length(); int in=0,num; //进位in初始化为0 for(int i=0; i<len2; i++) { num=st1[i]-'0'+st2[i]-'0'+in; //各位的和 in=num/10; num%=10; st1[i]=num+'0'; //放入较长的string里 } for(int j=len2; j<len1; j++) //如果遇到例如123 99892这样的样例,123处理完后需要向前边进位 { num=st1[j]-'0'+in; in=num/10; num%=10; st1[j]=num+'0'; // cout<<in<<" "<<st1<<endl; } if(in==1) //相加的结果比原有的string都长 st1+="1"; reverse(st1.begin(),st1.end()); return st1; } int main() { string str1,str2; int t; cin>>t; int n=0; while(t--) { cin>>str1>>str2; if(n) cout<<endl; cout<<"Case "<<++n<<":"; cout<<endl<<str1<<" + "<<str2<<" = "; cout<<add(str1,str2)<<endl; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |