hdoj 1047 Integer Inquiry 【多个大数相加】
2015-09-04 16:55
483 查看
Integer Inquiry
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15747 Accepted Submission(s): 4041
[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
[align=left]Source[/align]
East Central North America 1996
思路:
多个大数相加,其实和多个数相加一样的,就是将多个数相加的过程变的更加复杂了点,用到了大数相加的方法!还有这道题的输出格式要注意,每个数据块之间要有空行!
代码:
#include <stdio.h> #include <string.h> char a[105]; int a1[105]; int s[10005]; int main() { int T; int flag=0; scanf("%d",&T); while(T--) { if(flag==0) { flag=1; } else printf("\n"); memset(s,0,sizeof(s)); while(scanf("%s",a)&&a[0]!='0')//以%s输入的话,就不需要加getchar()! { int len=strlen(a); int t=0; memset(a1,0,sizeof(a1)); for(int i=len-1;i>=0;i--) { a1[t++]=a[i]-'0'; } for(int i=0;i<len;i++) { s[i]+=a1[i]; if(s[i]>=10) { s[i+1]+=s[i]/10;//记住:这一点是+=而不是赋值 s[i]%=10; } } } int i; for(i=110;i>=0&&s[i]==0;i--); if(i>=0) { for(;i>=0;i--) { printf("%d",s[i]); } } else printf("0"); printf("\n"); } return 0; }
相关文章推荐
- XCode Build Settings中几种Search Paths
- XCode Build Settings中几种Search Paths
- SwipeRefreshLayout.setRefreshing(true)不起作用解决办法
- dojo小例子(33)dojo.request.script通过JSONP实现跨域
- vc如何在GUI界面下显示命令窗
- arduino uno接口部分介绍
- UITabBarItem改变字体颜色
- Warning: Multiple build commands for output file /xxx
- 1051. Pop Sequence (25)
- HDU 5412 CRB and Queries 求区间第k小 CDQ分治+整体二分
- iOS:UIScrollView控件和UIPageControl控件的详解
- 01-复杂度2 Maximum Subsequence Sum (25分)
- [flume]AvroRuntimeException: Excessively large list allocation request detected
- POJ 题目3368 ||HDOJ 题目1806 Frequent values(RMQ)
- 用于打印UID和GID
- iOS 在UILabel显示不同的字体和颜色
- [APUE] 再读之进程环境
- JAVA如何获取GUID
- Algorithms - Week 2-0 Stacks and Queues
- 因为发现对象名称 'dbo.T3' 和索引名称 'PK__T3__3214EC2706CC942B' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (1)。