http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=396#problem/A
这道题我将多个数据的和分解为每次求两个数据的和,利用大整数加法的模版即可轻松解决
#include<stdio.h>
#include<string.h>
char s[110][110];
void sum(int i,int j){
    int a1[110],a2[110],k,l,len1=strlen(s[i]),len2=strlen(s[j]);
    memset(a1,0,sizeof(a1));
    memset(a2,0,sizeof(a2));
    l=0;
    for(k=len1-1;k>=0;k--)
        a1[l++]=s[i][k]-'0';
    l=0;
    for(k=len2-1;k>=0;k--)
        a2[l++]=s[j][k]-'0';
    for(k=0;k<110;k++){
        a1[k]+=a2[k];
        if(a1[k]>=10){
            a1[k]-=10;
            a1[k+1]++;
        }
    }
    int flag=0;
    l=0;
    for(k=109;k>=0;k--){
        if(flag)
            s[j][l++]=(char)(a1[k]+48);
        else if(a1[k]){
            s[j][l++]=(char)(a1[k]+48);
            flag=1;
        }
    }
}
int main(){
    char c;
    int i=0,j,k;
    while(scanf("%s",s[i])&&s[i][0]!='0'){
        i++;
    }
    for(k=0;k<i-1;k++)
        sum(k,k+1);
    puts(s[i-1]);
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation