RT,挂了#3,#6和#10,求大佬帮忙调一调
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
int n,a[26];
string s;
long long res=1,jc[2005];
long long power(long long _a,long long _b)
{
long long ans=1;
while(_b)
{
if(_b&1) ans=ans*_a%mod;
_a=_a*_a%mod;
_b>>=1;
}
return ans%mod;
}
int main()
{
scanf("%d",&n);
jc[0]=1;
for(int i=1;i<=n;i++) jc[i]=jc[i-1]*i%mod;
cin>>s;
for(int i=0;i<(int)s.length();i++) a[s[i]-'a']++;
int k=0;
for(int i=0;i<26;i++)
if(a[i]%2==1) k++;
if(k>1){printf("%lld\n",jc[n]);return 0;}
k=0;
for(int i=0;i<26;i++)
if(a[i]%2==1){k=a[i];break;}
for(int i=0;i<26;i++)
{
res*=jc[a[i]]*power(jc[a[i]/2],mod-2)%mod;
res%=mod;
}
res=res*jc[n/2]%mod;
if(k==0) printf("%lld\n",((jc[n]-res)%mod+mod)%mod);
else printf("%lld\n",((jc[n]-res*k%mod)%mod+mod)%mod);
return 0;
}