您的位置:首页 > 产品设计 > UI/UE

Integer Inquiry hdoj 1047

2015-07-24 19:58 399 查看

Integer Inquiry

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

Total Submission(s): 15216    Accepted Submission(s): 3909


[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]

370370367037037036703703703670/*
题意::
     首先输入一个正整数,表示可以计算几组数,接下来是输入不大于100行的
  字符串,直到输入的字符串的值为‘0’时,计算以上输入的字符串的和。
  然后将其和输出。
解题思路::
      这是个大数累加题,要用到大数加法。
     首先定义一个字符数组(足够大,本题范围为0~100000)来存放连续输入的
  字符串,然后用大数加法将各个位上的数累次相加。
  但要注意输出格式:第一次输入与输出之间没有空格,其他的要加空格。
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
int a[100001];
char s[100001];
int main(){
 int t,n,m,i,l;
 while(scanf("%d",&t)!=EOF)
 {
  while(t--)
  {
   memset(a,0,sizeof(a));
   while(scanf("%s",s)&&s[0]!='0')
   {
    n=1;
    l=strlen(s);
    for(i=l-1;i>=0;i--)//基本大数相加算法模型
    {
     a
+=s[i]-'0';
     a[n+1]+=a
/10;
     a
%=10;
     n++;
    }
   }
   m=0;
   for(i=1001;i>1;i--)
   {
    if(a[i]==0&&m==0)
        continue;
    else
    {
     m=1;
     printf("%d",a[i]);
    }
   }
   printf("%d\n",a[1]);//输出格式
   if(t)
    printf("\n");
  }
 }
 return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: