HDU 1047 Integer Inquiry【大数】
发布时间:2020-12-14 02:27:15 所属栏目:大数据 来源:网络整理
导读:Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15325????Accepted Submission(s): 3933 Problem Description One of the first users of BIT's new supercomputer was Chip D
Integer InquiryTime Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Problem Description
One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers.
``This supercomputer is great,'' remarked Chip. ``I only wish Timothy were here to see these results.'' (Chip moved to a new apartment,once one became available on the third floor of the Lemon Sky apartments on Third Street.)
?
Input
The input will consist of at most 100 lines of text,each of which contains a single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters in length,and will only contain digits (no VeryLongInteger will be negative).
The final input line will contain a single zero on a line by itself.
?
Output
Your program should output the sum of the VeryLongIntegers given in the input.
This problem contains multiple test cases! The first line of a multiple input is an integer N,then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks. The output format consists of N output blocks. There is a blank line between output blocks.
?
Sample Input
?
Sample Output
?
Source
East Central North America 1996
?
思路:?????????? 大数多个数相加和一般的数多个数相加方法一样,都是用一个数来保存结果(数的和),将数如的数加到这个结果上直到不满足条件为止,输出结果!区别在于:大数需要用到数组,需要将大数的两个数的加法的算法用到这个上面,具体操作看代码! 代码:? #include <stdio.h> #include <string.h> #define N 105 char a[N]; int b[N],c[N]; int main() { int n,i,j,k,len; scanf("%d",&n); while(n--) { memset(c,sizeof(c));//数组c用来保存最终的结果(多个大数的和) while(gets(a)&&a[0]!='0') { len=strlen(a); memset(b,sizeof(b));//数组b用来保存数组a中的字符-‘0’所得到的数值! for(i=len-1,j=0;i>=0;i--) { b[j++]=a[i]-'0'; } for(i=0;i<101;i++)//每次都将b加到c上 { c[i]+=b[i]; if(c[i]>=10) { c[i]-=10; c[i+1]++; } } } for(i=100;i>=0&&c[i]==0;i--);//输出c! if(i>=0) for(;i>=0;i--) printf("%d",c[i]); else printf("0"); printf("n"); if(n!=0)//两个输出结果之间要空一行! printf("n"); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |