开始: 2025-07-04 17:00:00

暑假训练赛03专题:逆元,组合数,倍增算法

结束: 2025-07-04 21:00:00
当前  2025-07-20 11:45:40  类型: IOI  状态: 已经结束 

T3


int main(){
	scanf("%d",&n);
	cin>>s;
	f[0]=1;
	for(int i=1;i<=n;i++)
		f[i]=f[i-1]*i%mod;
	for(int i=0;i<n;i++)
		cnt[s[i]-'a']++;
	if(ok()){
		printf("%lld",f[n]);
		return 0;
	}
	long long ans=A(n/2,n/2);
	for(int i=0;i<26;i++)
		if(cnt[i])
			ans=ans*A(cnt[i],(cnt[i]+1)/2)%mod;
	printf("%lld",(f[n]-ans+mod)%mod);
	return 0;
}



WTing  •  15天前
比赛已结束。