蒟蒻70分求助
查看原帖
蒟蒻70分求助
195331
Mine_KingCattleya楼主2021/5/16 18:50

RT,挂了#3,#6和#10,求大佬帮忙调一调e

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
int n,a[26];
string s;
long long res=1,jc[2005];
long long power(long long _a,long long _b)
{
	long long ans=1;
	while(_b)
	{
		if(_b&1) ans=ans*_a%mod;
		_a=_a*_a%mod;
		_b>>=1;
	}
	return ans%mod;
}
int main()
{
	scanf("%d",&n);
	jc[0]=1;
	for(int i=1;i<=n;i++) jc[i]=jc[i-1]*i%mod;
	cin>>s;
	for(int i=0;i<(int)s.length();i++) a[s[i]-'a']++;
	int k=0;
	for(int i=0;i<26;i++)
		if(a[i]%2==1) k++;
	if(k>1){printf("%lld\n",jc[n]);return 0;}
	k=0;
	for(int i=0;i<26;i++)
		if(a[i]%2==1){k=a[i];break;}
	for(int i=0;i<26;i++)
	{
		res*=jc[a[i]]*power(jc[a[i]/2],mod-2)%mod;
		res%=mod;
	}
	res=res*jc[n/2]%mod;
	if(k==0) printf("%lld\n",((jc[n]-res)%mod+mod)%mod);
	else printf("%lld\n",((jc[n]-res*k%mod)%mod+mod)%mod);
	return 0;
}

2021/5/16 18:50
加载中...