80pts求助
查看原帖
80pts求助
315205
Kniqht楼主2022/10/12 21:38

rt

#include<bits/stdc++.h>
#define int long long
#define ll long long
using namespace std;
const int N=1e7+10,mod=1e9+7;
int n,ans,cnt[N];
int sum,res;
char s[N];
signed main(){
    scanf("%lld%s",&n,s+1);sum=res=1;
    for(int i=1;i<=n;i++) cnt[s[i]-'a']++,sum=(sum*i)%mod;
    for(int i=0;i<26;i++) ans+=(cnt[i]&1ll);
    if(res>1) printf("%lld",sum);
    else{
        for(int i=0;i<26;i++){
            for(int j=cnt[i]-(cnt[i]>>1ll)+1ll;j<=cnt[i];j++)
                res=(res*j)%mod;
            if(cnt[i]&1) res=(res*(cnt[i]-(cnt[i]>>1ll)))%mod;
        }
        for(int i=(n>>1ll);i>=2ll;i--) res=(res*i)%mod;
        printf("%lld",(sum-res+mod)%mod);
    }   
	return 0;
}
2022/10/12 21:38
加载中...