改了一下,照样
```cpp
#include <iostream>
using namespace std;
int main()
{
string s[]={"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"};
bool f=false;long long ss=0,nows=0,ff=1;
long long i;
string in1; cin>>in1; if(in1==s[0]) ff=-1; else {for (i=1;i<21;i++) if (s[i]==in1) {f=true;nows+=(i-1);break;} if (!f) for (i=21;i<29;i++) if (s[i]==in1) {f=true;nows=20+(i-21)*10;break;} }
if (!f) {cin>>in1;for (i=1;i<=20;i++) if (s[i]==in1) {f=true;nows+=(i-1);break;} if (!f) for (i=21;i<=28;i++) if (s[i]==in1) {f=true;nows=20+(i-21)*10;break;} }
while (cin>>in1)
{
f=false;
if (!f) for (i=1;i<=20;i++) if (s[i]==in1) {f=true;nows+=(i-1);break;}
if (!f) for (i=21;i<=28;i++) if (s[i]==in1) {f=true;nows+=(20+(i-21)*10);break;}
if (!f) for (i=29;i<=31;i++) if (s[i]==in1) {f=true;ss+=(nows*(i==29?100:(i==30?1000:1000000)));nows=0;break;}
}
cout<<ff*(ss+nows)<<endl;
return 0;
}
```
by a___ @ 2017-03-18 22:39:10
20~46 没过
23 34 45除外
by a___ @ 2017-03-18 22:41:51