OJ_1010
来源:互联网 发布:java bigdecimal 累加 编辑:程序博客网 时间:2024/06/05 09:58
#include <iostream>#include <string>using namespace std;string eng[]={"zero","one","two","three","four","five","six","seven","eight","nine","+","=" };int getNum(string s){ for(int i=0;i<12;i++) { if(s==eng[i]) return i; } return -1; }void func(){ string in; while(true){ int a,b; cin>>in; int temp=getNum(in); a=temp; cin>>in; temp=getNum(in); if(temp<10){ a=a*10+temp; cin>>in; } cin>>in; temp=getNum(in); b=temp; cin>>in; temp=getNum(in); if(temp<10){ b=b*10+temp; cin>>in; } if(a==0&&b==0) break; cout<<a+b<<endl; }}int main(int argc, char *argv[]){//printf("Hello, world\n");func();return 0;}
构造单词对数字的映射,然后转化为数进行计算
- 题目描述:
- 读入两个小于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 =
- 样例输出:
39096
0 0