A260.学英语 正版题解
2025-06-24 12:46:28
发布于:江苏
其实根本不用很多判断!
只要建一个特别小的数组就行了!
绝对真实!绝对靠谱!
#include<bits/stdc++.h>
using namespace std;
string s1[]={"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"};
int n1[]={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 s,q;
int n,p=1,cnt;
int num(string s){for(int i=0;i<=30;i++) if(s1[i]s) return n1[i];}
int main(){
getline(cin,s);
for(int i=0;i<=s.size();i++){
if(s[i]!=' '&&i<s.size()) q+=s[i];
else{
if(q"negative") p=-1;
else{
int j=num(q);
if(j<=90) cnt+=j;
else{
if(j100){
if(s.find("million",i)-1&&s.find("thousand",i)-1){
cnt*=j;
n+=cnt;
cnt=0;
}
else cnt*=j;
}
else if(j1000){
if(s.find("million",i)==-1){
cnt*=j;
n+=cnt;
cnt=0;
}
else cnt*=j;
}
else{
cnt*=j;
n+=cnt;
cnt=0;
}
}
}
q="";
}
}
n+=cnt;
cout<<n*p;
return 0;
}
全部评论 1
打字把手打废了quq
1周前 来自 上海
0
有帮助,赞一个