纯粹练习map。。。
写得比较鸡肋。。。
然后发现string我也不咋会用 = =。。。无语都。。
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <string>
#include <algorithm>
#define MID(x,y) ( ( x + y ) >> 1 )
#define L(x) ( x << 1 )
#define R(x) ( x << 1 | 1 )
#define BUG puts("here!!!")
using namespace std;
map<string,int> m;
int main()
{
int cnt = 0;
for(int i=0; i<26; i++)
{
string a;
a += ('a' + i);
m.insert(pair<string,int>(a,cnt++));
}
for(int i=0; i<26; i++)
{
char c = 'a' + i;
string a; a += c;
for(int k=i+1; k<26; k++)
{
string b;
b += 'a' + k;
m.insert(pair<string,int>(a+b,cnt++));
}
}
for(int i=0; i<26; i++)
{
char c = 'a' + i;
string a; a += c;
for(int k=i+1; k<26; k++)
{
string b;
b += 'a' + k;
for(int p=k+1; p<26; p++)
{
string c;
c += 'a' + p;
m.insert(pair<string,int>(a+b+c,cnt++));
}
}
}
for(int i=0; i<26; i++)
{
char c = 'a' + i;
string a; a += c;
for(int k=i+1; k<26; k++)
{
string b;
b += 'a' + k;
for(int p=k+1; p<26; p++)
{
string c;
c += 'a' + p;
for(int q=p+1; q<26; q++)
{
string d;
d += 'a' + q;
m.insert(pair<string,int>(a+b+c+d,cnt++));
}
}
}
}
for(int i=0; i<26; i++)
{
char c = 'a' + i;
string a; a += c;
for(int k=i+1; k<26; k++)
{
string b;
b += 'a' + k;
for(int p=k+1; p<26; p++)
{
string c;
c += 'a' + p;
for(int q=p+1; q<26; q++)
{
string d;
d += 'a' + q;
for(int l=q+1; l<26; l++)
{
string e;
e += 'a' + l;
m.insert(pair<string,int>(a+b+c+d+e,cnt++));
}
}
}
}
}
string a;
while( cin >> a )
{
if( !m.count(a) )
cout << 0 << endl;
else
cout << m.lower_bound(a)->second + 1 << endl;
}
return 0;
}