A+B
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Output
3
90
96
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s,t;
int flag=0,r,len;
char sh[15][20]={"zero","one","two","three","four","five","six","seven","eight","nine"};
// vector<string> sh;
// sh.push_back("zero");sh.push_back("one");sh.push_back("two");sh.push_back("three");
// sh.push_back("four");sh.push_back("five");sh.push_back("six");sh.push_back("seven");
// sh.push_back("eight");sh.push_back("nine");
while(getline(cin,s))
{
vector<string> x;
stringstream ss(s);
int sum=0,l=0;
while(ss>>t)
{
x.push_back(t);
l++;
if(t=="+")len=l-1;
}
r=x.size()-(len+2);
//cout <<len<<" "<<r<<endl;
//if(x[0]==sh[1])cout <<"yes"<<endl;
//else cout <<"no"<<endl;
int len1=len,r1=r,s1=0,s2=0,s3=0,i,j;
for(i=0;i<len;i++)
{
for(j=0;j<10;j++)
if(x[i]==sh[j])
{
s1+=j*pow(10,len1-1);len1--;break;
}
}
for(i=len+1;i<x.size()-1;i++)
{
for(j=0;j<10;j++)
if(x[i]==sh[j])
{
s2+=j*pow(10,r1-1);r1--;break;
}
}
if(s1==s2&&s1==0)break;
//cout <<s1<<"```"<<s2<<endl;
s3=s1+s2;
printf("%d\n",s3);
}
}