int、long会爆范围,要用long long才行
long也会爆的原因是short<=int<=long(视不同编译环境而定)
所以如果long也爆了的话可能并不是程序的问题,而只是单纯的范围不够。。(我怀疑了自己程序半天)
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
/*映射部分*/
string s[6];
long long num[6]={0},sum=0;
for(int i=0;i<6;i++){
cin>>s[i];
num[i]=m[s[i]];
}
sort(num,num+6);
for(int i=0;i<6;i++)
sum=sum*100+num[i];
cout<<sum;
return 0;
}
映射部分:
map<string,int>m;
m["zero"]=0;
m["one"]=1;
m["two"]=4;
m["three"]=9;
m["four"]=16;
m["five"]=25;
m["six"]=36;
m["seven"]=49;
m["eight"]=64;
m["nine"]=81;
m["ten"]=100;
m["eleven"]=121;
m["twelve"]=144;
m["thirteen"]=169;
m["fourteen"]=196;
m["fifteen"]=225;
m["sixteen"]=256;
m["seventeen"]=289;
m["eighteen"]=324;
m["nineteen"]=361;
m["twenty"]=400;
m["a"]=1;
m["first"]=1;
m["another"]=1;
m["both"]=4;
m["second"]=4;
m["third"]=9;