一道神奇的dp题。。。
//字符串不管如何处理,其ASCII码总和不变,故凡是长度相同,字母和相同的串都可以转换
//所以f[i][j]的i表示的是字符串的长度,j表示的是字符串所有字母加起来的和,状态转移方程为f[i+1][j+k]+=f[i][j](1<=k<=26).
#include<stdio.h>
#include<stdlib.h>#include<string.h>
#define mod 1000000007
char s[110];
int f[110][3000];
int main()
{
int t,i,j,k,len;
int sum;
memset(f,0,sizeof(f));
f[0][0]=1;
for(i=0;i<=105;i++)
for(j=0;j<3000;j++){
if(f[i][j]>0){
for(k=0;k<26;k++){
f[i+1][j+k]+=(f[i][j]%mod);
f[i+1][j+k]%=mod;
}
}
}
scanf("%d",&t);
while(t--){
scanf("%s",s);
len=strlen(s);
sum=0;
for(i=0;i<len;i++){
sum+=s[i]-'a';
}
printf("%d\n",f[len][sum]-1);
}
//system("pause");
return 0;
}