社区讨论

0溢事件

学术版参与者 2已保存回复 6

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@mjfj7ajg
此快照首次捕获于
2025/12/21 17:35
2 个月前
此快照最后确认于
2025/12/21 17:46
2 个月前
查看原帖
如题,巨弱在P1952(n进制高精度加法)中写出了如下代码
CPP
#include<iostream>
#include<string>
using namespace std;
string a,b;
int n,m,A[210],B[210],C[210];
int ltn(char c){
    if(c>='0'&&c<='9')return c-'0';
    return c-87;
}
char ntl(int c){
    char k;
    if(c>=0&&c<=9){
        k=c+'0';
        return k;
    }else{
        k=c+87;
        return k;
    }
}
int main(){
    cin>>n>>a>>b;
    int la=a.size(),lb=b.size();
    for(int i=0;i<la;i++)A[210-i]=ltn(a[la-1-i]);
    for(int i=0;i<lb;i++)B[210-i]=ltn(b[lb-1-i]);
    for(int i=0;i<max(la,lb);i++){
        C[210-i]=A[210-i]+B[210-i]+m;
        m=C[210-i]/n;
        C[210-i]%=n;
    }
    if(m>0)cout<<ntl(m);
    for(int i=211-max(la,lb);i<=210;i++)cout<<ntl(C[i]);
    return 0;
}
交上去只有10分,后来发现是余数变量m没有初始化为0,但m是我在主函数外定义的,初始值应该为0,这是为什么?
还有,我如果这么写第七行
CPP
int n,A[210],B[210],C[210],m;
会RE,显示在运行完25行后n的值变成了0,导致除0报错。但我全程没有修改n的值,为什么会这样?

回复

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

正在加载回复...