#include<iostream> #include<cmath> using namespace std; char num1[550],num2[550],ans[550];//保存输入的数以及输出的数 int f(int ind1,int ind2,int ansind,int in){ char temp1=num1[ind1],temp2=num2[ind2];//读取当前位 if(ind1<0 && ind2<0){//当前位都为0,退出 if(in>0){ans[ansind]='0'+in;ansind++;};//如果还有进位 return ansind;//返回最高位以用于输出 } if(ind1<0)temp1='0';//如果读取到的位为空 if(ind2<0)temp2='0'; int temp=(temp1-'0')+(temp2-'0')+in;//求和 ans[ansind]=temp%10+'0';//赋值 return f(ind1-1,ind2-1,ansind+1,temp/10);//求下一位 } int main(){ int temp1=0,temp2=0; cin>>num1>>num2; while(num1[temp1]>='0')temp1++; while(num2[temp2]>='0')temp2++;//分别得出两个数的最高位 for(int i=f(temp1-1,temp2-1,0,0)-1;i>=0;i--){ cout<<ans[i];//字符串应倒过来输出为数。 } return 0; }
地址:https://www.luogu.com.cn/problem/P1601