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 |
这组数据都试过了,还是WA,谁帮着看看?In Reply To:这组数据都过了 应该就可以过了 Posted by:gengyit at 2007-05-27 13:57:46 #include <iostream> #include <string> using namespace std; struct nums { int num; char str[20]; }; nums nu[] = { {0,"zero"}, {1,"one"}, {2,"two"}, {3,"three"}, {4,"four"}, {5,"five"}, {6,"six"}, {7,"seven"}, {8,"eight"}, {9,"nine"}, {10,"ten"}, {11,"eleven"}, {12,"twelve"}, {13,"thirteen"}, {14,"fourteen"}, {15,"fifteen"}, {16,"sixteen"}, {17,"seventeen"}, {18,"eighteen"}, {19,"nineteen"}, {20,"twenty"}, {30,"thirty"}, {40,"forty"}, {50,"fifty"}, {60,"sixty"}, {70,"seventy"}, {80,"eighty"}, {90,"ninety"}, {-1,"negative"}, {100,"hundred"}, {1000,"thousand"}, {1000000,"million"} }; int main() { char input[200]; while(cin.getline(input,200)) { string str = input; int result = 0; int calc = 0; int mill = 0; int th = 0; bool b_na = false; bool b_hun = false; size_t pos=0,pos2=0; str += " "; while((pos2=str.find(" ",pos))!=string::npos) { string calcstr = str.substr(pos,pos2-pos); pos = pos2+1; if(calcstr.compare(nu[28].str)==0) { b_na = true; continue; } for(int i=0;i<32;i++) { if(calcstr.compare(nu[i].str)==0) { if(i==31) { mill = calc*nu[i].num; calc=0; } else if(i==29) { b_hun=true; calc *= nu[i].num; } else if(i==30) { if(b_hun) { th = calc*nu[i].num; calc = 0; } else calc*=nu[i].num; } else calc += nu[i].num; } } } result = mill+th+calc; if(b_na) result *= -1; cout<<result<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator