您的位置:首页 > 其它

POJ 1496 1850

2011-08-07 14:06 190 查看
组合数学额

买一送一额

//============================================================================

// Name : hello.cpp

// Author : key

// Version : ∞

// Copyright : Your copyright notice

// Description : Hello World in C++, Ansi-style

//============================================================================

#include <iostream>

#include <cstring>

#include <cstdio>

#include <cmath>

#include <queue>

#include <stack>

#include <string>

#include <algorithm>

using namespace std;

//POJ 1496 1850

int com(int n, int r)// return C(n, r)

{

if( n-r > r )

r = n-r; // C(n, r) = C(n, n-r)

int i, j, s = 1;

for( i=0, j=1; i < r; ++i )

{

s *= (n-i);

for( ; j <= r && s%j == 0; ++j )

s /= j;

}

return s;

}

char str[15];

int main()

{

int i,j;

int flat = 0;

while(scanf("%s",str)!=EOF){

flat = 0;

int len=strlen(str);

for(i=0;str[i];i++)

{

if(flat) break;

for(j=i+1;str[j];j++)

{

if(flat) break;

if(str[i]>str[j])

{

printf("0\n");

flat = 1;

}

}

}

if(flat) continue;

int res = 0;

for( i = 1; i<=len; i ++)

res += com(26, i);

for( i=0; i<len; i ++ )

res -= com(26-(str[i]-'a'+1), len-i);

printf("%d\n",res);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: