「已注销」 2023-03-19 20:01 采纳率: 90.2%
浏览 12
已结题

C++高精度算法(加法)

洛谷原题:https://www.luogu.com.cn/problem/P1601
高精度加法,样例都能过,但是全部都WA了(下载了第一个数据点,in:123 123,out:246,明明也能正常输出246但还是WA)
有点让我摸不着头脑

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main(){
    char a[502],b[502];
    int aa[502],bb[502],c[503],lena,lenb,lenc,x=0;
    memset(c,0,sizeof(c));
    gets(a);gets(b);
    lena=strlen(a);lenb=strlen(b);
    for(int i=0;i<lena;i++)aa[i]=a[lena-i-1]-48;    
    for(int i=0;i<lenb;i++)bb[i]=b[lenb-i-1]-48;
    lenc=0;
    while(lenc<lena||lenc<lenb){
        c[lenc]=aa[lenc]+bb[lenc]+x;
        x=c[lenc]/10;
        c[lenc]=c[lenc]%10;
        lenc++;
    }
    if(x==1)cout<<x;
    for(int i=lenc-1;i>=0;i--)cout<<c[i];
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-19 20:23
    关注

    参考GPT和自己的思路:

    首先,这个问题的代码实现本身没有太大的问题,细节方面稍微需要注意一下,但是在传统的语言环境(如 Visual Studio)下可以正常运行。

    但是在洛谷这样的 OJ 平台上,输入的格式和实现有一些要求。在本题中,输入格式要求两个数之间有一个空格,所以在读入字符串之后,需要用 strtok 函数将两个字符串分开,再转化为整数数组。同时,注意 C++ 中 gets 函数不是很安全,最好使用 std::getline。

    修改后的代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    int main(){
        char a[502],b[502];
        int aa[502],bb[502],c[503],lena,lenb,lenc,x=0;
        memset(c,0,sizeof(c));
        std::getline(cin,a);
        std::getline(cin,b);
        lena=strlen(a);lenb=strlen(b);
        char *p=strtok(a," ");
        int i=0;
        while(p!=NULL){
            aa[i++]=p[0]-'0';
            p=strtok(NULL," ");
        }
        p=strtok(b," ");
        i=0;
        while(p!=NULL){
            bb[i++]=p[0]-'0';
            p=strtok(NULL," ");
        }
        lenc=0;
        while(lenc<lena||lenc<lenb){
            c[lenc]=aa[lenc]+bb[lenc]+x;
            x=c[lenc]/10;
            c[lenc]=c[lenc]%10;
            lenc++;
        }
        if(x==1)cout<<x;
        for(int i=lenc-1;i>=0;i--)cout<<c[i];
        return 0;
    }
    

    希望能够解决你的问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)