Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大家帮下忙啊,罕见的RE啊,我找半天错误找不出来啊#include <iostream> #include <sstream> #include <map> #include <string> #include <algorithm> using namespace std; map< string, int> mm; const string key[]={"negative", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred", "thousand", "million"}; const int val[]={0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,100,1000,1000000}; string a[100]; int calc(string *pl, string *pr) { int ret=0; string *p=find(pl,pr,key[29]); if (p!=pr) { ret+=mm[*(p-1)]*val[29]; pl=p+1; } while (pl!=pr) { ret+=mm[*pl]; ++pl; } return ret; } int main() { for (int i=0; i<32; ++i) mm[key[i]]=val[i]; string s; while (getline(cin,s)) { stringstream sin(s); int r=0; while (sin>>a[r]) ++r; int l=0, sign=1; if (a[0]==key[0]) { sign=-1; l=1; } int ans=0; string *p; if ( ( p = find(a+l,a+r,key[31]) ) !=a+r ) { ans+=calc(a+l,p)*val[31]; l=p-a+1; } if ( ( p = find(a+l,a+r,key[30]) ) !=a+r ) { ans+=calc(a+l,p)*val[30]; l=p-a+1; } ans+=calc(a+l,a+r); ans*=sign; cout<<ans<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator