Start: 2025-07-04 17:00:00

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

End: 2025-07-04 21:00:00
Now  2025-09-26 20:35:58  类型: IOI  状态: Ended 

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  •  2个月前
The contest has ended.