poj 1496
预处理后求解。
代码:
#include<iostream>
#include<fstream>
using namespace std;
int a[5][30];
int b[5][30];
void read(){
// ifstream cin("in.txt");
int i,j,k;
char c[10];
for(i=0;i<26;i++)
{
b[0][i]=i+1;
}
for(k=1;k<=4;k++)
for(i=0;i<26;i++)
{
a[k][i]=b[k-1][25]-b[k-1][i];
if(i>0) b[k][i]=b[k][i-1]+a[k][i];
else
b[k][i]=a[k][i];
}
while(cin>>c){
for(i=0;i<strlen(c);i++)
if(i+1<strlen(c)&&c[i]>=c[i+1])
break;
if(i<strlen(c)) cout<<0<<endl;
else
{
j=0;
int len=strlen(c);
k=len-1;
for(i=0;i<len;i++)
{
j+=b[k--][c[i]-'a'];
}
cout<<j<<endl;
}
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号