蒟蒻70分求助

P5684 [CSP-J2019 江西] 非回文串

@[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


|