标签:cout std for 数组 space ios string 数据 span
#include <iostream> #include <string> /*project:两个大整数相加 **@author:浅滩 **data:2019.05.15 */ using namespace std; void add(const string &,const string &); int main() { string str1,str2; cin>>str1>>str2; if(str1.size()>=str2.size())//我不知道为什么这莫该就ac通过了,一脸懵逼 add(str1,str2); else add(str2,str1); } void add(const string &str1,const string &str2) { int *num1=new int [str1.size()]; int *num2=new int [str2.size()]; int result_size; //const int len=(str1.size()>str2.size()? str1.size():str2.size()); int result[10000]; fill(result,(result+10000),0);//初始化结果数组 for(int i=0;i<str1.size();i++)//字符串到整数数组的转换 num1[i]=str1[i]-‘0‘; for(int i=0;i<str2.size();i++) num2[i]=str2[i]-‘0‘; int s1=str1.size()-1,s2=str2.size()-1,k=(str1.size()>str2.size()? str1.size():str2.size())-1; cout<<k+1; while(s1>=0&&s2>=0) { result[k]=num1[s1]+num2[s2]; k--;s1--;s2--; } while(s1>=0) { result[k]+=num1[s1]; k--;s1--; } while(s2>=0) { result[k]+=num1[s2]; k--;s2--; } // cout<<k+1;return; result_size=(str1.size()>str2.size()? str1.size():str2.size())-1; for(int i=result_size;i>k+1;i--)//从后向前进位 { result[i-1]+=result[i]/10; result[i]=result[i]%10; } //cout<<result_size<<endl; for(int i=k+1;i<=k+1+result_size;i++) cout<<result[i]; } //之前的bug是下面这组测试数据 //456 98949444184 // 9683087243640 //98949444184 456结果不相同
标签:cout std for 数组 space ios string 数据 span
原文地址:https://www.cnblogs.com/cstdio1/p/10891634.html