ZOJ Problem Set - 2001 Adding Reversed Numbers

来源:互联网 发布:java socket网络编程 编辑:程序博客网 时间:2024/03/28 16:50

真是不难的题目,做得好难,这么难通过,总结:要把握细节题,一方面,要仔细,当然的,另一方面,更重要的,是要有更轻巧的技巧来编程,可以少走很多弯路。

#include <iostream>#include <algorithm>#include <vector>using namespace std;int CharToNum (char ch);int main (){int ncase , sum , a , b , temp , num;string sa , sb , stemp;vector<int> vec;cin>>ncase;while (ncase--){cin>>sa>>sb;if (sa.size() < sb.size()){stemp = sa;sa = sb;sb = stemp;}temp = 0;for (int i = 0; i < sa.size(); i++){a = CharToNum(sa[i]);if (i >= sb.size()) b = 0;else b = CharToNum(sb[i]);sum = a + b + temp;num = sum % 10;temp = sum / 10;vec.push_back(num);}if (temp != 0) vec.push_back(temp);vector<int>::iterator it = vec.end()-1;while (*it == 0){vec.erase(it);it = vec.end() - 1;}it = vec.begin();while (*it == 0) it++;if (it == vec.end()) cout<<"0"; for (; it != vec.end(); it++){cout<<*it;} cout<<endl;vec.clear();}return 0;}int CharToNum (char ch){int num;switch (ch){case '0': num = 0; break;case '1': num = 1; break;case '2': num = 2; break;case '3': num = 3; break;case '4': num = 4; break;case '5': num = 5; break;case '6': num = 6; break;case '7': num = 7; break;case '8': num = 8; break;case '9': num = 9; break;}return num;}

0 0
原创粉丝点击