题目描述:
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
-
输入:
-
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
-
输出:
-
对每个测试用例输出1行,即A+B的值.
-
样例输入:
-
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
-
样例输出:
-
3
90
96
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
inline int getInt(string str)
{
if (str=="zero") return 0;
if (str=="one") return 1;
if (str=="two") return 2;
if (str=="three") return 3;
if (str=="four") return 4;
if (str=="five") return 5;
if (str=="six") return 6;
if (str=="seven") return 7;
if (str=="eight") return 8;
if (str=="nine") return 9;
return -1;
}
int main()
{
vector<string> vec1,vec2;
vector<string>::iterator it;
string tmp1,tmp2;
int A,B;
while(true)
{
A=0;
B=0;
vec1.clear();
vec2.clear();
while(cin>>tmp1,tmp1!="+") vec1.push_back(tmp1);
while(cin>>tmp2,tmp2!="=") vec2.push_back(tmp2);
int len1 = vec1.size();
int len2 = vec2.size();
bool flag = (*(vec1.begin())=="zero" && *(vec2.begin())=="zero" &&len1==1 &&len2==1);
if (flag)
break;
for (int i=0;i<len1;i++)
{
A = A + getInt(vec1[i]) * (int)pow(10.0,(double)len1-1-i);
}
for (int i=0;i<len2;i++)
{
B = B + getInt(vec2[i]) * (int)pow(10.0,(double)len2-1-i);
}
cout<<A+B<<endl;
}
//system("pause");
return 0;
}