HDU 1002 A + B Problem II (大数加法)
2015-09-28 11:09
357 查看
A + B Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768K (Java/Others)
Total Submission(s): 271671 Accepted Submission(s): 52508
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using
32-bit integer. You may assume the length of each integer will not exceed 1000.
Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line
between two test cases.
Sample Input
2 1 2 112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
大数问题,就是用数组模拟计算问题。加法,用数组模拟计算数的加法,进行对每一位进行相加。
附上代码:
#include<iostream> #include<algorithm> #include<cstring> #include<stdio.h> #include<string.h> using namespace std; int main() { char a[1050],b[1050]; int c[1050],d[1050],sum[1050]; int n,num = 0; cin >> n; getchar(); while(n--) { num++; memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); memset(sum,0,sizeof(sum)); cin >> a >> b; int j = 0; for(int i = strlen(a) - 1;i >= 0;i--) //存入数组中 { c[j++] = a[i] - '0'; } j = 0; for(int i = strlen(b) - 1;i >= 0;i--) //存入数组中 { d[j++] = b[i] - '0'; } int len = strlen(a) > strlen(b) ? strlen(a) : strlen(b); // 寻找出最长的数字位数 int jin = 0; for(int i = 0;i < len;i++) { sum[i] = c[i] + d[i] + jin ; jin = 0; if(sum[i] > 9 && i < len - 1) // i = len - 1 的时候为最前面的一位,所以不需要进行进位 { jin = sum[i]/10; sum[i] = sum[i]%10; } } if(num != 1) // 控制输出的格式 cout << endl; cout << "Case " << num << ":" << endl; cout << a << " + " << b << " = "; for(int i = len-1;i >= 0;i--) { cout << sum[i]; } cout << endl; } return 0; }
相关文章推荐
- 最小优先级队列
- js基础对象-编程模式与设计模式
- Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理
- Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)
- 【转载】JAVA常见面试题及解答(精华)
- HDU5492 Find a path (dp)
- 使用EJB使用jboss7.0中配置数据源
- CSS的一些圆角图形实例分享
- hdu5468(容斥原理)-2015 ACM/ICPC Asia Regional Shanghai Online
- 哪种监控工具才是运维人的最爱?
- host、dig、nslookup 查询DNS命令
- PHP开发人员容易忽略的几点精华
- skia draw path flow
- Oracle之分析函数、开窗函数
- 全栈工程师有什么用(转载)
- Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
- iOS开发之窥探UICollectionViewController(一) -- Ready Your CollectionViewController
- DataStage 二、InfoSphere Information Server进程的启动和停止
- Unity自动更新、AssetBundle整理
- 安卓多线程处理(转)