题目来源:点击这里
#include<cstdio>
#include<stack>
#include<iostream>
#include<queue>
#include<algorithm>
#include<iterator>
#include<set>
#include<string>
#include<cstring>
#include<map>
using namespace std;
bool cmp(int a,int b){
char p[5],q[5];
sprintf(p,"%d",a);
sprintf(q,"%d",b);
if(strlen(p)<strlen(q))
return true;
else{
if(strlen(p)>strlen(q))
return false;
if(strcmp(p,q)==-1) return true;
return false;
}
}
int main(){
int l[1000];
map<string,int>k;
int cnt=0,t,b=0;
k["one"]=1;
k["two"]=2;
k["three"]=3;
k["four"]=4;
k["five"]=5;
k["six"]=6;
k["seven"]=7;
k["eight"]=8;
k["nine"]=9;
k["ten"]=10;
k["eleven"]=11;
k["twelve"]=12;
k["thirteen"]=13;
k["fourteen"]=14;
k["fifteen"]=15;
k["sixteen"]=16;
k["seventeen"]=17;
k["eighteen"]=18;
k["ninetween"]=19;
k["twenty"]=20;
k["a"]=1;
k["both"]=2;//first second third
k["another"]=2;
k["first"]=1;
k["second"]=2;
k["third"]=3;
char s[20];
while(scanf("%s",s)){
if(s[strlen(s)-1]=='.'){
s[strlen(s)-1]='\0';
b=1;
}
if(k[s]){
t=(k[s]*k[s])%100;
if(t){
l[cnt++]=t;
}
}
if(b) break;
}
sort(l,l+cnt,cmp);
if(cnt==0) printf("0");
else{
for(int i=0;i<cnt;i++){
if(i==0)
printf("%d",l[i]);
else
printf("%02d",l[i]);
}
}
return 0;
}