社区讨论

数据有毒啊,我怎么错了,自己算了无数遍!!!!

P1601高精度加法参与者 3已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@mi6mcsmh
此快照首次捕获于
2025/11/20 07:13
4 个月前
此快照最后确认于
2025/11/20 07:13
4 个月前
查看原帖
CPP
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
char a[50005],b[50005];
int l1[50005],l2[50005],l[50005];
int len1,len2;
//读入 
void dr(){
    char x;
    int i=1;
    while((x=getchar())!='\n'){
        a[i]=x;
        i++;
    }
    len1=i-1;
    i=1;
    while((x=getchar())!='\n'){
        b[i]=x;
        i++;
    }
    len2=i-1;
}
//逆序存储 
void work(int maxn,int minn){
    int q=1;
    for(int i=maxn;i>=1;i--){
        l1[q]=a[i];
        l1[q]-='0';
        q++;
    }
    q=1;
    for(int i=minn;i>=1;i--){
        l2[q]=b[i];
        l2[q]-='0';
        q++;
    }
}
int main(){
    int cd=0;
    dr();
    work(len1,len2);
    int len=(len1>=len2?len1:len2);
    int m=1;
    bool k=0;
    if(l1[len]+l2[len]>=10) k=1;
    for(int i=1;i<=len;i++){
        l[m]=l1[i]+l2[i];
        if(l[m]>=10){
            l[m]%=10;
            l1[i+1]++;
        }
        m++;
        cd++;
    }
    //判断最高位是否要进位 
    if(k) printf("1");
    for(int i=cd;i>=1;i--){
        printf("%d",l[i]);
    }
    return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...