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;
}

posted on 2011-03-27 17:25  宇宙吾心  阅读(270)  评论(0)    收藏  举报

导航