1260 不一样的A+B
1260 不一样的A+B
题目描述
读入两个小于100的正整数A和B,计算A+B的值并输出。
需要注意的是:整数A和B的每一位数字由对应的英文单词给出。如整数34表示为three four。
输入要求
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,此时的结果不要输出。
输出要求
对每个测试用例输出一行结果,即A+B的值,用数值形式输出。
测试数据
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
3
90
96
AC代码
因为写的烦,所以记录了下,方便大家看看
#include <bits/stdc++.h>
using namespace std;
string s[10]= {"zero","one","two","three","four","five","six","seven","eight","nine"};
int find(string res) {
for(int i=0; i<10; i++) {
if(s[i]==res) return i;
}
}
int main() {
string in,temp="";
int a,b,t=0;
while(getline(cin,in)) {
t=0;
temp="";
for(int i=0; i<in.size(); i++) {
if(in[i]>='a' && in[i]<='z') temp+=in[i];
if(in[i]==' ') {
if(temp=="") continue;//如果没有这句话,多余“ ”会产生额外的数
t=t*10+find(temp);
temp="";
}
if(in[i]=='+') {
a=t;
t=0;
}
if(in[i]=='=') b=t;
}
if(a==0 && b==0) break;
else cout<<a+b<<endl;
}
return 0;
}