#include <bits/stdc++.h> using namespace std; string str[10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; map<string,string>m={{"zero","0"} ,{"one","1"},{"two","2"},{"three","3"},{"four","4"},{"five","5"},{"six","6"},{"seven","7"},{"eight","8"},{"nine","9"}}; vector<string> split(string s,char ch){ int start=0; int len=0; vector<string>ret; for(int i=0;i<s.size();i++){ if(s[i]==ch){ ret.push_back(s.substr(start,len)); start=i+1; len=0; } else{ len++; } } if(start<s.length()) ret.push_back(s.substr(start,len)); return ret; } void print(int sum){ stack<int> s; while(sum){ s.push(sum%10); sum/=10; } int flag=0; while(!s.empty()){ int t=s.top(); printf("%s",flag==0?"":" "); cout<<str[t]; s.pop(); flag=1; } cout<<endl; } int main(){ int t,flag=1; string s; cin>>t; while(t--){ cin>>flag; getchar(); getline(cin,s); for(int i=0;i<10;i++){ if(s.find(str[i])!=-1){ s.replace(s.find(str[i]),str[i].size(),m[str[i]]); } } vector<string> v=split(s,' '); int j,a=0,b=0; for(j=0;j<v.size();j++) if(v[j]!="+") a=a*10+stoi(v[j]); else break; for(j=j+1;j<v.size();j++){ if(v[j]!="=") b=b*10+stoi(v[j]); } int sum=a+b; if(flag==1){ print(sum); } else cout<<sum<<endl; } } |
Double click to view unformatted code.