@[Mine_King](/user/195331)
```cpp
#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;
printf("%lld\n",((jc[n]-res)%mod+mod)%mod);
return 0;
}
```
改了两行
by lcyxds @ 2021-05-16 23:52:01
@[Mine_King](/user/195331) 你算组合数的过程中已经计算了枚举中点就不能再乘了
by lcyxds @ 2021-05-16 23:52:59
@[lcyxds](/user/124314) 大佬,我看不出自己在哪里计算了枚举中点,您能给我仔细讲讲吗![e](https://xn--9zr.tk/kel)
by Mine_King @ 2021-05-17 19:58:47
@[lcyxds](/user/124314) 啊我明白了,谢谢大佬QwQ,此贴完结
by Mine_King @ 2021-05-17 21:31:12