

























//数论题,,,,这个做法是正向加求和算的,当然应该也可以反向求出不符合规定的数目,然后减去
#include <iostream>
using namespace std;
__int64 tt(int x,int y)
{
__int64 sum=1;
int i,j;
for(i=0,j=1;i<y;i++)
{
sum*=(x-i);
for(;j<=y&&sum%j==0;j++) sum/=j;
}
return sum;
}
int main()
{
string s;
__int64 n;
int i,j;
while(cin>>s)
{
for(i=0;s[i+1];i++)
{
if(s[i]>=s[i+1]) break;
}
if(s[i+1]) cout<<0<<endl;
else
{
i=s.length();
for(--i,n=0;i;i--)
n+=tt(26,i);
for(i=0;s[i];i++)
{
if(i==0)j='a';
else j=s[i-1]+1;
for(;j<s[i];j++)
{
n+=tt('z'-j,s.length()-i-1);
}
}
cout<<n+1<<endl;
}
}
return 0;
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。