题目自己看 传送门
如果你是这样写的:
#include<iostream>
using namespace std;
int main(){
unsigned long long int a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}
恭喜你,0分
注意看,大整数加法,两百位,所以不能直接加减,我们要用类似于列竖式的方法计算
具体如下:
计算:48+65
48+65=113
4 8
5
1 1 3
代码实现:
#include<bits/stdc++.h>
using namespace std;
int a[201],b[201],c[201];
int in(int t[]){
string s;
cin>>s;
int l=s.length();
for(int i=l-1;i>=0;i--){
t[l-i]=s[i]-'0';
}
return l;
}
int main(){
int la=in(a),lb=in(b),x=0;//大整数输入
for(int i=1;i<=max(la,lb);i++){
c[i]+=a[i]+b[i]+x;//按位相加
x=c[i]/10;//进位
c[i]%=10;
}
bool q=true;
for(int i=max(la,lb)+1;i>=1;i--){
if(c[i]!=0){//删前导0
cout<<c[i];
q=false;
}else if(!q){
cout<<c[i];
}
}
return 0;
}