大数的第一道题,比较简单,仔细一点就行了。
代码如下:
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 int i, s[10000], sum[10000]={0}, n, j, k, flag; 7 char a[10000]; 8 gets(a); 9 while(a[0] != '0') 10 { 11 n=strlen(a); 12 memset(s,0,sizeof(s)); 13 for (i=0; i<n;i++) 14 { 15 s[i]=a[n-1-i]-'0'; 16 } 17 for (i=0, j=0; i<n; i++) 18 { 19 if (sum[j]+s[i] <10) 20 sum[j]+=s[i]; 21 else 22 { 23 sum[j]=(sum[j]+s[i])%10; 24 sum[j+1]++; 25 } 26 j++; 27 for (k=j; sum[k] >= 10; k++) 28 { 29 sum[k]=sum[k]%10; 30 sum[k+1]++; 31 } 32 } 33 gets(a); 34 } 35 flag=0; 36 for (i=9999; i>=0; i--) 37 { 38 if (sum[i] || flag == 1) 39 { 40 flag=1; 41 printf("%d", sum[i]); 42 } 43 } 44 printf("\n"); 45 return 0; 46 }