• 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())!='
    ')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 }
  • 相关阅读:
    .net中使用JQuery Ajax判断用户名是否存在的方法
    简单的SqlHelper
    C#中邮件的发送基本操作
    身份证号码组成 含代码
    C#和asp.net中链接数据库中 参数的几种传递方法
    【转】iptables 命令介绍
    sed的替换命令
    【转】sed 的参数
    【转】sed正则表达式
    【转】shell中如何判断一个变量是否为空
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13230950.html
Copyright © 2020-2023  润新知