当前位置: 代码迷 >> 综合 >> 考研机试--浙大计算机研究生复试上机考试-2005年
  详细解决方案

考研机试--浙大计算机研究生复试上机考试-2005年

热度:48   发布时间:2024-01-25 03:08:42.0

A + B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 21551    Accepted Submission(s): 12895


Problem Description
读入两个小于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

  

 把英语单词分别讨论处理,注意输入格式。

#include<bits/stdc++.h>
using namespace std;
const int maxn=30;
string ch;
char c1[maxn],c2[maxn],c3[maxn],c4[maxn];
int ok(char c1[])
{int a=0;if(c1[0]=='o')a=1;else if(c1[0]=='e')a=8;else if(c1[0]=='n')a=9;else if(c1[0]=='z')a=0;else if(c1[0]=='t'){if(c1[1]=='w')a=2;elsea=3;}else if(c1[0]=='f'){if(c1[1]=='o')a=4;elsea=5;}else if(c1[0]=='s'){if(c1[1]=='i')a=6;elsea=7;}return a;
}
int main()
{while(true){getline(cin,ch);//readint len=ch.size();int i=0;int j1=0,j2=0,j3=0,j4=0;int f1=0,f11=0,f21=0;for(int i=0; i<len; i++){//cout<<ch[i]<<endl;if(ch[i]=='=')break;if(ch[i]=='+'){f1=1;++i;continue;}if(ch[i]==' '&&!f1){f11=1;continue;}if(ch[i]==' '&&f1){f21=1;continue;}if(f1)//+后面{if(!f21){c3[j3++]=ch[i];}else{c4[j4++]=ch[i];}}else //+前面{if(!f11){c1[j1++]=ch[i];//cout<<c1[j1]<<endl;}else{c2[j2++]=ch[i];}}}int a=0,b=0,c=0,d=0;int s1=0,s2=0;if(j1&&j2){a=ok(c1);b=ok(c2);s1=a*10+b;}else{a=ok(c1);s1=a;}if(j3&&j4){c=ok(c3);d=ok(c4);s2=c*10+d;}else{c=ok(c3);s2=c;}if(a==0&&c==0)return 0;//cout<<s1<<" "<<s2<<endl;cout<<s1+s2<<endl;}
}