#include<bits/stdc++.h> using namespace std; string mapp[100001]={"zero","one","two","three","four","five","six","seven","eight","nine"}; int main() { int n; cin>>n; while(n--) { char a[1001]; //用于标记输出字母还是数字 int flag; cin>>flag; getchar(); gets(a); string str=a; vector<string>v; vector<string>v2; //提取等式左边 int place1,place2; place1=str.find('+',0); string temp_left=str.substr(0,place1-1); istringstream stream(temp_left); string s; while(stream>>s) { v.push_back(s); } for(int i=0;i<v.size();i++) { for(int j=0;j<10;j++) { if(v[i]==mapp[j]) { v[i]=j+'0'; } } } // for(int i=0;i<v.size();i++) // { // cout<<v[i]<<" "; // } //提取等式右边的数字 place2=str.find('=',place1); string temp_right=str.substr(place1+2,place2-2-place1-1); istringstream stream2(temp_right); string s2; while(stream2>>s2) { v2.push_back(s2); } for(int i=0;i<v2.size();i++) { for(int j=0;j<10;j++) { if(v2[i]==mapp[j]) { v2[i]=j+'0'; } } } // for(int i=0;i<v2.size();i++) // { // cout<<v2[i]<<" "; // } string str1="",str2=""; for(int i=0;i<v.size();i++) { str1+=v[i]; } for(int i=0;i<v2.size();i++) { str2+=v2[i]; } long long int num1=0,num2=0; for(int i=0;i<str1.size();i++) { num1*=10; num1+=str1[i]-'0'; } for(int i=0;i<str2.size();i++) { num2*=10; num2+=str2[i]-'0'; } if(flag==0) { printf("%d\n",num1+num2); } else { //int sum=num1+num2; string result=to_string(num1+num2); for(int i=0;i<result.size();i++) { cout<<mapp[result[i]-'0']<<" "; } cout<<endl; } } } |
Double click to view unformatted code.