#include<stdio.h>
#include<string.h>
#define maxn 27
int c[maxn][maxn];
int main()
{
int ans,i,j,k;
for(i=1;i<=maxn;i++)
c[i][0]=1;
for(i=1;i<=maxn;i++)
for(j=1;j<=i;j++)
c[i][j]=c[i-1][j-1]+c[i-1][j];//利用杨辉三角
char s[15];
while(~scanf("%s",&s)){
int ok=1;
for(i=1;i<strlen(s);i++)
if(s[i]<=s[i-1]){
printf("0\n");
ok=0;
break;
}
if(!ok)continue;
ans=0;
for(i=1;i<strlen(s);i++)
ans+=c[maxn][i];
for(k=1;k<s[0]-'a'+1;k++)
ans+=c[maxn-k][strlen(s)-1];
for(i=1;i<strlen(s);i++){
for(k=s[i-1]-'a'+2;k<s[i]-'a'+1;k++)
ans+=c[maxn-k][strlen(s)-i-1];
}
printf("%d\n",ans+1);
}
return 0;
}
POJ1850 Code组合数学
最新推荐文章于 2018-11-08 17:09:54 发布