2010年浙江大学计算机及软件工程研究生机试真题 A+B
2013-11-30 01:32
483 查看
题目描述:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入:
样例输出:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入:
-234,567,890 123,456,789 1,234 2,345,678
样例输出:
-111111101 2346912
#include <iostream> #include <string> #include <vector> using namespace std; void Deal(string &s1, string &s2); int main() { string s1, s2, temp; vector<int> v; int sum, a, b, flag; while (cin >> s1 >> s2) { int f1 = 0, f2 = 0, f3 = 0, f4 = 0,f5 = 0, f6 = 0; v.clear(); if (s1[0] == '-' && s2[0] == '-') f1 = 1; else if (s1[0] != '-' && s2[0] != '-') f2 = 1; else if (s1[0] == '-' && s2[0] != '-') f3 = 1; else if (s1[0] != '-' && s2[0] == '-') f4 = 1; if (f1 == 1 || f2 == 1) { Deal(s1, s2); //cout << s1 << endl << s2 << endl; sum = 0; flag = 0; reverse(begin(s1), end(s1)); reverse(begin(s2), end(s2)); if (s1.size() < s2.size()) { temp = s1; s1 = s2; s2 = temp; } for (int i = 0; i < s1.size(); ++i) { if (s1[i] == '0')a = 0; else if (s1[i] == '1')a = 1; else if (s1[i] == '2')a = 2; else if (s1[i] == '3')a = 3; else if (s1[i] == '4')a = 4; else if (s1[i] == '5')a = 5; else if (s1[i] == '6')a = 6; else if (s1[i] == '7')a = 7; else if (s1[i] == '8')a = 8; else if (s1[i] == '9')a = 9; if (i >= s2.size())b = 0; else { if (s2[i] == '0')b = 0; else if (s2[i] == '1')b = 1; else if (s2[i] == '2')b = 2; else if (s2[i] == '3')b = 3; else if (s2[i] == '4')b = 4; else if (s2[i] == '5')b = 5; else if (s2[i] == '6')b = 6; else if (s2[i] == '7')b = 7; else if (s2[i] == '8')b = 8; else if (s2[i] == '9')b = 9; } sum = a + b + flag; if (sum > 9) { sum = sum - 10; v.push_back(sum); flag = 1; } else { v.push_back(sum); flag = 0; } } if (flag == 1) v.push_back(1); if (f2 == 1) { for (int i = v.size() - 1; i >= 0; --i) { cout << v[i]; } } if (f1 == 1) { cout << "-"; for (int i = v.size() - 1; i >= 0; --i) { cout << v[i]; } } } if (f3 || f4) { Deal(s1, s2); if (f3 == 1 && s1 > s2) f5 = 1; if (f4 == 1 && s2 > s1) f6 = 1; //cout << s1 << endl << s2 << endl; sum = 0; flag = 0; reverse(begin(s1), end(s1)); reverse(begin(s2), end(s2)); if (s1.size() < s2.size()) { temp = s1; s1 = s2; s2 = temp; } for (int i = 0; i < s1.size(); ++i) { if (s1[i] == '0')a = 0; else if (s1[i] == '1')a = 1; else if (s1[i] == '2')a = 2; else if (s1[i] == '3')a = 3; else if (s1[i] == '4')a = 4; else if (s1[i] == '5')a = 5; else if (s1[i] == '6')a = 6; else if (s1[i] == '7')a = 7; else if (s1[i] == '8')a = 8; else if (s1[i] == '9')a = 9; if (i >= s2.size())b = 0; else { if (s2[i] == '0')b = 0; else if (s2[i] == '1')b = 1; else if (s2[i] == '2')b = 2; else if (s2[i] == '3')b = 3; else if (s2[i] == '4')b = 4; else if (s2[i] == '5')b = 5; else if (s2[i] == '6')b = 6; else if (s2[i] == '7')b = 7; else if (s2[i] == '8')b = 8; else if (s2[i] == '9')b = 9; } sum = a - b - flag; //if (flag == 1) sum = sum - 1; if (sum < 0) { sum = sum + 10; v.push_back(sum); flag = 1; } else { v.push_back(sum); flag = 0; } } //if (flag == 1) //v.push_back(1); if (f5 || f6) { cout << "-"; for (int i = v.size() - 1; i >= 0; --i) { cout << v[i]; } } else { for (int i = v.size() - 1; i >= 0; --i) { cout << v[i]; } } } cout << endl; } return 0; } void Deal(string &s1, string &s2) { for (int i = 0; i < s1.size(); ++i) { if (s1[i] == ',' || s1[i] == '-') s1.erase(i, 1); } for (int i = 0; i < s2.size(); ++i) { if (s2[i] == ',' || s2[i] == '-') s2.erase(i, 1); } }//提交的时候是编译错误,Orz
相关文章推荐
- (数据结构)图的应用,一个简单的学校地图.包含的内容:图的最短路径算法 和 图的深度优先遍历算法
- 分形与数据结构
- 网络学习笔记(2)
- 关于HTTP长连接
- 计算机数字系统简述(Introduction to Computer Digit System)
- 大端、小端、网络字节序
- Android--检测用户的网络情况netWorkInfo-Dialog-intent跳转到系统网络设置界面
- Ubuntu修改计算机名
- java网络编程
- QTcpServer
- 网络协议学习笔记
- 跨域问题及解决(1)
- 数据结构-图-最小生成树_Prim
- 数据结构-图-邻接表深度和广度遍历DFS_BFS
- 数据结构-图-邻接矩阵深度和广度遍历DFS_BFS
- mac10.9下运行Virtualbox,网络选桥接方式报错
- 基于TCP和多线程实现无线鼠标键盘-InputMethodManager
- 搞死你的个人计算机简单代码示例
- 计算机图形学--旋转变换(java)
- CMD网络命令