50分WAqwq
查看原帖
50分WAqwq
467890
lcx132432432楼主2021/10/22 18:15
#include<bits/stdc++.h>
using namespace std;
int n,a[27],tot,f=0;
long long ans;
long long M=1e9+7;
string s;
long long jc(int x){
	int res=1;
	for(int i=1;i<=x;i++){
		res=res%M*i%M;
	}
	return res%M;
}
int main(){
	scanf("%d",&n);
	cin>>s;
	for(int i=0;i<s.size();i++)a[s[i]-'a'+1]++;
	long long sum=jc(n)%M;
	for(int i=1;i<=26;i++){
		if(a[i]%2==1)tot++,f=1;
		if(tot>1){
			printf("%lld",sum%M);
			return 0;
		}
	}
	ans=1;int k=1;
    for(int i=1;i<=26;i++){
    	if(a[i]%2==1)k=i;
    	ans*=(jc(a[i])%M/jc(a[i]/2%M)%M);
    }
    tot=jc(n/2)%M;
    ans=(ans*tot%M)%M;
    if(f==1)ans*=a[k]%M;
    ans=sum-ans;if(ans<0)ans+=M;
    printf("%lld",ans%M);
	return 0;
}

感谢dalao

2021/10/22 18:15
加载中...