HDU 5651 xiaoxin juju needs help

Posted Fighting Heart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5651 xiaoxin juju needs help相关的知识,希望对你有一定的参考价值。

组合数杨辉三角打表,这样避免了除法求逆元。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;

const long long MOD=1000000007;
const int maxn=1000+10;
long long c[maxn][maxn];
int tot[30];
char s[maxn];

void init()
{
    c[1][1]=1;
    for(int i=1;i<=1000;i++) c[i][0]=1;
    for(int i=2;i<=1000;i++)
    {
        for(int j=1;j<=1000;j++)
        {
            c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;
        }
    }
}

int main()
{
    int T;
    init();
    scanf("%d",&T);
    while(T--)
    {
        scanf("%s",s);
        memset(tot,0,sizeof tot);
        for(int i=0;s[i];i++) tot[s[i]-a]++;

        int num=0;
        for(int i=0;i<26;i++)
            if(tot[i]%2==1) num++;

        if(num>1) printf("0\n");
        else
        {
            int sum=0;
            long long ans=1;
            for(int i=0;i<26;i++) sum=sum+tot[i];
            if(num==1)
            {
                for(int i=0;i<26;i++) if(tot[i]%2==1) tot[i]--;
                sum--;
            }
            for(int i=0;i<26;i++)
            {
                if(tot[i]==0||sum==0) continue;
                ans=(ans*c[sum/2][tot[i]/2])%MOD;
                sum=sum-tot[i];
            }
            printf("%lld\n",ans);
        }
    }
    return 0;
}

 

以上是关于HDU 5651 xiaoxin juju needs help的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5651 xiaoxin juju needs help 逆元

hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)

HDU 5651 xiaoxin juju needs help(BestCoder Round #77 (div.1)1001)

HDU 5651 逆元

HDU 5651

HDU 5654 xiaoxin and his watermelon candy 离线树状数组