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)