蒟蒻60分WA,求神犇帮忙看看
查看原帖
蒟蒻60分WA,求神犇帮忙看看
575093
HMR202001楼主2022/10/6 17:31

RT,WA # 6,7,9,10

自己想的玄学做法,但是和题解似乎好像也许可能还是比较相似的,求大家帮忙看看错在哪里

#include<bits/stdc++.h>
using namespace std;
const long long M=1e9+7;
long long n,t[30]={0},cnt=0,zimu=0;
long long jiecheng(long long n){
	long long ans=1;
	for(int i=2;i<=n;i++){
		ans*=i;
		ans%=M;
	}
	return ans;
}
int main(){
	cin>>n;
	if(n==1){
		cout<<0;
		return 0;
	}
	char c;
	for(int i=0;i<n;i++){
		cin>>c;
		t[c-'a']++;
	}
	for(int i=0;i<26;i++){
		if(t[i]%2==1){
			cnt++;
		}
		if(t[i]>0) zimu++;
	}
	if(zimu==1){
		cout<<0;
		return 0;
	}
	if(cnt>1){
		cout<<jiecheng(n);
		return 0;
	}
	cnt=0;
	for(int i=0;i<26;i++){
		cnt+=(t[i]/2);
	}
	cnt=0;
	long long huiwen=1;
	for(int i=0;i<26;i++){
		if(t[i]>0){
			huiwen*=(jiecheng(t[i])/jiecheng(t[i]/2));
			huiwen%=M;
			cnt+=(t[i]/2);
		}
	}
	huiwen*=jiecheng(cnt);
	huiwen%=M;
	long long ans=(jiecheng(n)+M-huiwen)%M;
	cout<<ans;
	return 0;
}
2022/10/6 17:31
加载中...