您的位置:首页 > 其它

HDU 1047(大数相加)

2015-02-07 20:43 295 查看

Integer Inquiry

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 13719 Accepted Submission(s): 3460



[align=left]Problem Description[/align]
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.)

[align=left]Input[/align]
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.

[align=left]Output[/align]
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.

[align=left]Sample Input[/align]

1

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0


[align=left]Sample Output[/align]
[align=left]370370367037037036703703703670[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]AC代码:[/align]
#include "stdio.h"
#include "string.h"
#define M 105
int main()
{
int n,i,j,l,k,a[M],s[M];
char c[M];
scanf("%d",&n);
// getchar();
for(k=0;k<n;k++)
{
memset(s,0,sizeof(s));
while(scanf("%s",c),strcmp(c,"0"))
{
memset(a,0,sizeof(s));
l=strlen(c);
for(i=0;i<l;i++)
a[i]=c[l-1-i]-'0';
for(i=0;i<M;i++)
{
s[i]+=a[i];
if(s[i]>=10)
{
s[i+1]++;
s[i]-=10;
}
}
}
for(i=M-1;i>=0;i--)
if(s[i])
break;
for(j=i;j>=0;j--)
printf("%d",s[j]);

if(i<0)
printf("0");
printf("\n");
if(k!=n-1)
printf("\n");

}

return 0;

}


[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: