Problem Description
读入两个小于100的正整数A和B,计算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 9096
AC代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char a[1001]; int b[10],c[10]; int fun(char c1,char c2) { if(c1=='o') return 1; else if(c1=='t' && c2=='w') return 2; else if(c1=='t' && c2=='h') return 3; else if(c1=='f' && c2=='o') return 4; else if(c1=='f' && c2=='i') return 5; else if(c1=='s' && c2=='i') return 6; else if(c1=='s' && c2=='e') return 7; else if(c1=='e') return 8; else if(c1=='n') return 9; else if(c1=='z') return 0; return -1; } int main() { while(gets(a)) { int num=0,sum=0; int len = strlen(a); int flag=0; for(int i=0;i<len-1;i++) { if(i==0) { b[num]=fun(a[i],a[i+1]); num++; } else { if(a[i]=='+') flag=1; if(a[i]==' ' && a[i+1]!='+' && a[i+1]!='=') { if(flag==0) { b[num]=fun(a[i+1],a[i+2]); num++; } else { c[sum]=fun(a[i+1],a[i+2]); sum++; } } } } int num1,num2; if(num==2) num1=b[0]*10+b[1]; else num1=b[0]; if(sum==2) num2=c[0]*10+c[1]; else num2=c[0]; int ans= num1+num2; if(ans==0) return 0; else cout<<ans<<endl; } return 0; }