NOI中“大整数加法”问题不能AC的解决建议

Posted 龙师火帝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOI中“大整数加法”问题不能AC的解决建议相关的知识,希望对你有一定的参考价值。

一、检查输入000和00相加是否出结果。

二、数组不要开小了,亲测256的数组不够。推荐1024。
 
附录AC程序:
如果不能AC请将256改为1024,255改为1023。
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char *argv[])
{
    int a[256],b[256];//这是不够的,改为1024就可以AC了
    char ch;
    int i=255,m,n,num;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    while((ch=getchar())!=\n){//输入 
        a[i]=ch-48;
        i--;//此时i为数的实际个数 
    }
    m=i+1;
    i=255;
    while((ch=getchar())!=\n){
        b[i]=ch-48;
        i--;
    }
    n=i+1;
    num=m;//重序+清零 
    i=1;
    while(i<num&&num<256){ 
        a[i]=a[num];
        a[num]=0;
        i++;
        num++;
    }
    num=n;
    i=1;
    while(i<n&&num<256){
        b[i]=b[num];
        b[num]=0; 
        i++;
        num++;
    }
    i=1;
    while(i<256){
        a[i]+=b[i];
        if(a[i]>9){
            a[i]-=10;
            a[i+1]+=1;
            i++;
        }else
            i++;
    }
    int flag=0;
    for(int k=255;k>0;k--){    
        if(a[k]&&!flag)
            flag=1;
        if(flag)
            cout<<a[k];
    }
    if(!flag)
        cout<<0;
    cout<<endl; 
    return 0;
}

 

以上是关于NOI中“大整数加法”问题不能AC的解决建议的主要内容,如果未能解决你的问题,请参考以下文章

高精度模板

大整数加法

大整数加法

2981 大整数加法

1-6-10:大整数加法

1151: 大整数加法(正数)