hdu 1047 Integer Inquiry
2015-03-13 12:47
302 查看
Integer Inquiry
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13978 Accepted Submission(s): 3524
[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 <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <assert.h> #include <ctype.h> #include <map> #include <string> #include <set> #include <bitset> #include <utility> #include <algorithm> #include <vector> #include <stack> #include <queue> #include <iostream> #include <fstream> #include <list> using namespace std; const int MAXL=120; struct BigNum { int num[MAXL]; int len; BigNum() { memset(num,0,sizeof(num)); } }; //高精度加法 BigNum Add(BigNum &a, BigNum &b) { BigNum c; int i, len; len = (a.len > b.len) ? a.len : b.len; memset(c.num, 0, sizeof(c.num)); for(i = 0; i < len; i++) { c.num[i] += (a.num[i]+b.num[i]); if(c.num[i] >= 10) { c.num[i+1]++; c.num[i] -= 10; } } if(c.num[len]) len++; c.len = len; return c; } void print(BigNum &a) //输出大数 { int i; for(i = a.len-1; i >= 0; i--) printf("%d", a.num[i]); puts(""); } void Init(BigNum &a, char *s, int &tag) //将字符串转化为大数 { int i = 0, j = strlen(s); if(s[0] == '-') { j--; i++; tag *= -1; } a.len = j; for(; s[i] != '\0'; i++, j--) a.num[j-1] = s[i]-'0'; } int main(void) { //freopen("in.txt","r",stdin); int n; scanf("%d",&n); char s[MAXL]; while(n--) { getchar(); BigNum a; int tag=1; Init(a,"0",tag); while(scanf("%s",s)) { BigNum b; if(strcmp(s,"0")==0) break; int tag=1; Init(b,s,tag); a=Add(a,b); } print(a); if(n) printf("\n"); } return 0; }
View Code
相关文章推荐
- HDU 1047 Integer Inquiry
- HDU 1047 Integer Inquiry (多个大数相加)
- HDU-1047-Integer Inquiry(Java大数水题 && 格式恶心)
- HDU 1047 Integer Inquiry
- HDU-1047 Integer Inquiry Java
- POJ 1503 && HDU 1047 Integer Inquiry(高精度)
- HDU 1047 Integer Inquiry
- hdu 1047 Integer Inquiry 大数加法
- ZOJ 1292/HDU 1047 Integer Inquiry
- hdu 1047 Integer Inquiry
- HDU 1047 Integer Inquiry 大数相加 string解法
- hdu 1047 Integer Inquiry
- HDU-1047 Integer Inquiry 大数相加
- HDU 1047 Integer Inquiry
- HDU1047 - Integer Inquiry (大数加法)
- HDU-1047 Integer Inquiry Java
- HDU 1047 Integer Inquiry
- hdu 1047 Integer Inquiry(JAVA)
- HDU-1047 Integer Inquiry
- HDU 1047 -- Integer Inquiry(Java)