1002 A + B Problem II
来源:互联网 发布:软件开发考核指标 编辑:程序博客网 时间:2024/04/29 19:15
A + B Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 353608 Accepted Submission(s): 68625
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
21 2112233445566778899 998877665544332211
Sample Output
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
代码
#include <iostream>#include <string>using namespace std;string sum(string s1, string s2){ if (s1.length()<s2.length()) { string temp = s1; s1 = s2; s2 = temp; } int i, j; for (i = s1.length() - 1, j = s2.length() - 1; i >= 0; i--, j--) { s1[i] = char(s1[i] + (j >= 0 ? s2[j] - '0' : 0)); //注意细节 if (s1[i] - '0' >= 10) { s1[i] = char((s1[i] - '0') % 10 + '0'); if (i) s1[i - 1]++; else s1 = '1' + s1; } } return s1;}int main(){ int n; int k = 0, m = 0; cin >> n; while (k++ < n) { //题意要求保留原来的大数 string a, b, s; cin >> a >> b; cout << "Case " << k << ":" << endl; cout << a << " + " << b << " = "; if (a.length() < b.length()) { string temp = a; a = b; b = temp; } s = a; //length后的-1不能忘记 for (int i = a.length() - 1, j = b.length() - 1; i >= 0; --i, --j) { if (j >= 0) s[i] = s[i] + b[j] - '0'; if (s[i] > '9') { s[i] = s[i] - 10; if (i) ++s[i - 1]; else //最高位需要进位的时候,在最前面+1位 s = '1' + s; } } //s = sum(a, b); cout << s << endl; if (++m < n) cout << endl; } return 0;}
大数运算,写个模板就可以了,HDU上输出格式尤其要注意,经常性的格式出错
0 0
- 1002 A + B Problem II
- 1002 A + B Problem II
- 1002 A + B Problem II
- 1002 ( A + B Problem II )
- 1002 A + B Problem II
- 1002:A + B Problem II
- 1002 A + B Problem II
- 1002 A + B Problem II
- A + B Problem II (1002)
- 1002 A + B Problem II
- 1002 A + B Problem II
- [1002]: A + B Problem II
- 1002 A + B Problem II
- 1002 A + B Problem II
- 1002:A + B Problem II
- 1002 A + B Problem II
- Problem-1002 : A + B Problem II
- 【HDOJ】 <Problem - 1002> : A + B Problem II
- NIO使用Reactor模式遇到的问题
- MIT 线性代数(22—24)读书笔记
- CSDN日报20170409 ——《扯蛋的密码规则》
- 设计模式简介
- 编程范式
- 1002 A + B Problem II
- 高端人才必看,生意人必读!
- Linux_搭建FTP服务器
- HDU 1010 Tempter of the Bone
- C++之面向对象程序设计的基本特点(抽象、封装、继承、多态)
- Qt--QWebSocket判断是否连接成功
- 继承中初始化顺序
- 就叫第一个吧
- php的流程控制的替代语法