一道恶心的字符串的模拟。毫无意义。
洛谷P1603
思路挺简单的,就是把各种单词变成数字后直接排个序,按占两个位,输出就行了(有dalao提醒我用long long)
还有another表示三者及以上(希望英语课每天睡觉的蒟蒻没有听错)所以another表示3.
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<ctime>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cctype>
#include<cerrno>
#include<clocale>
#include<complex>
#include<deque>
#include<exception>
#include<fstream>
#include<functional>
#include<limits>
#include<list>
#include<map>
#include<ios>
#include<iosfwd>
#include<istream>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<stack>
#include<stdexcept>
#include<streambuf>
#include<utility>
#include<vector>
#include<cwchar>
#include<cwctype>
#include <algorithm>
using namespace std;
unsigned long long ans;
string k[7];
int num[50];
int c=1;
int main() {
for(int i=1; i<=6; i++) {
cin>>k[i];
if(k[i]=="one")num[c]=01,c++;//令人智熄
if(k[i]=="two")num[c]=04,c++;
if(k[i]=="three")num[c]=9,c++;
if(k[i]=="four")num[c]=16,c++;
if(k[i]=="five")num[c]=25,c++;
if(k[i]=="six")num[c]=36,c++;
if(k[i]=="seven")num[c]=49,c++;
if(k[i]=="eight")num[c]=64,c++;
if(k[i]=="nine")num[c]=81,c++;
if(k[i]=="ten")num[c]=00,c++;
if(k[i]=="eleven")num[c]=21,c++;
if(k[i]=="twelve")num[c]=44,c++;
if(k[i]=="thirteen")num[c]=69,c++;
if(k[i]=="fourteen")num[c]=96,c++;
if(k[i]=="fifteen")num[c]=25,c++;
if(k[i]=="sixteen")num[c]=56,c++;
if(k[i]=="seventeen")num[c]=89,c++;
if(k[i]=="eighteen")num[c]=24,c++;
if(k[i]=="nineteen")num[c]=61,c++;
if(k[i]=="twenty")num[c]=00,c++;
if(k[i]=="a"||k[i]=="first")num[c]=01,c++;
if(k[i]=="both"||k[i]=="second")num[c]=04,c++;
if(k[i]=="another"||k[i]=="third")num[c]=9,c++;
}
sort(num+1,num+c);
for(int i=1;i<=c-1;i++){
ans+=num[i];
ans*=100;
}cout<<ans/100;//因为最后多乘了一次。
}
我为什么要写这道题
还不是我要做洛谷的试炼场。。。