P1601 A+B Problem(高精)

题目链接: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())!='\n')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())!='\n')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 }

 

posted @ 2020-07-03 16:01  TFLSNOI  阅读(158)  评论(0编辑  收藏  举报