新手启示者
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int MAXN=100005;
int A[MAXN],B[MAXN],C[MAXN],ANS[MAXN],LEN_A,LEN_B,LEN_ANS;
char x;
void Read(int *A,int &LEN){
string cur;
cin>>cur;
LEN=cur.size();
for(int i=0;i<LEN;i++){
if(cur[i]!='-')
A[i]=cur[i]-'0';
else
x='-';
}
reverse(A,A+LEN);
}
int main(){
int n;
cin>>n;
for(int j=1;j<=n;j++){
LEN_ANS=max(LEN_A,LEN_B);
Read(A,LEN_A);
Read(B,LEN_B);
for(int i=0;i<=LEN_ANS;i++){
ANS[i]=A[i]+B[i]+C[i];
if(ANS[i]>9){
C[i+1]=ANS[i]/10,ANS[i]-=10;
}
}
while(ANS[LEN_ANS]>0){
LEN_ANS++;
}
cout<<x;
for(int i=LEN_ANS-1;i>=0;i--){
cout<<ANS[i];
}
cout<<endl;
}
return 0;
}
WA0
资深守护
我就知道你会问。
int n;
string a,b;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
高精度加法…………
输出。
(别忘重置)
}
return 0;
初级光能
什么东西,看不懂
核心
while(n--){
strin x,y;
cin>>x>>y;
cout<<Plus(x,y)<<endl;
}
plus函数,就是高加
高级守护
函数:
void Plus() {
c[0]=max(a[0],b[0]);
int jw=0,h;
for(int i=1;i<=c[0];i++) {
h=a[i]+b[i]+jw;
jw=h/10;
c[i]=h%10;
}
if(jw!=0) {
c[0]++;
c[c[0]]=1;
}
for(int i=c[0];i>=1;i--)
cout<<c[i];
cout<<endl;
}
主函数:
int n;
cin>>n;
string x,y;
while(n--) {
cin>>x>>y;
a[0]=x.size();
b[0]=y.size();
for(int i=0;i<x.size();i++)
a[i+1]=x[x.size()-i-1]-'0';
for(int i=0;i<y.size();i++)
b[i+1]=y[y.size()-i-1]-'0';
Plus();
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
}
头文件自己加