hdu acm-1047 Integer Inquiry(大数相加)
2014-05-02 19:57
381 查看
Integer Inquiry
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11678 Accepted Submission(s): 2936
[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
仅仅为了存一个高精度大数相加的模板
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <cstring> #include <math.h> #include <ctime> using namespace std; #define maxn 32768 void add(char a[],char b[],char back[]) { int i,j,k,up,x,y,z,l; char *c; if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2; c=(char *) malloc(l*sizeof(char)); i=strlen(a)-1; j=strlen(b)-1; k=0;up=0; while(i>=0||j>=0) { if(i<0) x='0'; else x=a[i]; if(j<0) y='0'; else y=b[j]; z=x-'0'+y-'0'; if(up) z+=1; if(z>9) {up=1;z%=10;} else up=0; c[k++]=z+'0'; i--;j--; } if(up) c[k++]='1'; i=0; c[k]='\0'; for(k-=1;k>=0;k--) back[i++]=c[k]; back[i]='\0'; } int main() { int n; scanf("%d",&n); char a[maxn]="0"; while(n--) { char b[maxn],c[maxn]; memset(b,'\0',sizeof(b)); memset(c,'\0',sizeof(c)); memset(a,'\0',sizeof(a)); a[0]='0'; while(1) { scanf("%s",b); if(b[0]=='0') break; add(a,b,c); strcpy(a,c); memset(b,'\0',sizeof(b)); memset(c,'\0',sizeof(c)); } if(n==0) printf("%s\n",a); else printf("%s\n\n",a); } return 0; }
相关文章推荐
- BigNums——HDUOJ 1047 - Integer Inquiry(多个大数相加)
- HDU 1047 Integer Inquiry 大数相加 string解法
- HDU 1047 Integer Inquiry 多个大数相加
- HDU 1047 Integer Inquiry 大数相加 string解法
- HDU 1047 Integer Inquiry (多个大数相加)
- hdoj 1047 Integer Inquiry 【多个大数相加】
- 杭电—1047 多个大数相加 Integer Inquiry
- HDOJ 1047 Integer Inquiry(多个大数相加)
- HDU-1047 Integer Inquiry 大数相加
- 【大数问题】 HDOJ 1047 Integer Inquiry
- hdoj1047 Integer Inquiry(大整数的相加)
- POJ 1503 Integer Inquiry 简单大数相加
- HDU 1047 Integer Inquiry JAVA大数
- HDU-1047-Integer Inquiry(Java大数水题 && 格式恶心)
- POJ 1503 Integer Inquiry 简单大数相加
- hdu1047 Integer Inquiry 多次大数相加
- poj 1503 Integer Inquiry(多个大数相加)
- POJ 1503 Integer Inquiry【大数相加 java】
- POJ 1503 Integer Inquiry【大数相加 java】
- Integer Inquiry_hdu_1047(大数).java