题目链接:https://www.luogu.com.cn/problem/P1601
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[505], b[505]; 4 int ans[510]; 5 int main() 6 { 7 char c; 8 int la=0; 9 while((c=getchar())!=' ')a[la++]=c-'0'; 10 for(int i=0; i<la/2; i++)swap(a[i],a[la-i-1]);//倒置数组a 11 // for(int i=0; i<la; i++)cout<<a[i];//测试输出 12 // cout<<endl; 13 int lb=0; 14 while((c=getchar())!=' ')b[lb++]=c-'0'; 15 for(int i=0; i<lb/2; i++)swap(b[i],b[lb-i-1]);//倒置数组b 16 // for(int i=0; i<lb; i++)cout<<b[i];//测试输出 17 // cout<<endl; 18 int l=max(la, lb); 19 20 // for(int i=0; i<l+10; i++)cout<<a[i]<<" "; 21 // cout<<endl; 22 // for(int i=0; i<l+10; i++)cout<<b[i]<<" "; 23 // cout<<endl; 24 25 int jw=0; 26 for(int i=0; i<l; i++){ 27 int t=a[i]+b[i]+jw; 28 ans[i]=t%10; 29 jw=t/10; 30 // cout<<ans[i]<<" ";//测试用 31 } 32 if(jw==1){ 33 ans[l]=1; 34 l=l+1; 35 } 36 for(int i=l-1; i>=0; i--)cout<<ans[i]; 37 return 0; 38 }
很久没写高精度,为上课今天快速写了一下,自认为很牛逼(没有使用多余字符串),结果提交luogu全部WA,调试很久(通过注释可以看得出来)依然全部WA。
查看评论区的时候看到如下:
才发现了windows下的这个坑。详解请查看https://blog.csdn.net/hnxyxiaomeng/article/details/84979649
重新更改代码后如下,从容AC
1 #include<bits/stdc++.h> 2 using namespace std; 3 char aa[505], bb[505]; 4 int a[505], b[505]; 5 int ans[510]; 6 int la, lb; 7 int main() 8 { 9 cin>>aa>>bb; 10 la=strlen(aa), lb=strlen(bb); 11 for(int i=0; i<la; i++)a[la-1-i]=aa[i]-'0'; 12 for(int i=0; i<lb; i++)b[lb-1-i]=bb[i]-'0'; 13 14 int l=max(la, lb); 15 16 int jw=0; 17 for(int i=0; i<l; i++){ 18 int t=a[i]+b[i]+jw; 19 ans[i]=t%10; 20 jw=t/10; 21 //cout<<ans[i]<<" ";//测试用 22 } 23 24 if(jw==1){ 25 ans[l]=1; 26 l=l+1; 27 } 28 for(int i=l-1; i>=0; i--)cout<<ans[i]; 29 return 0; 30 }