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;
}

num

相关推荐