求助

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

``` #include<bits/stdc++.h> #define int long long using namespace std; const int mod=1e9+7; int n,a[26]; string s; int res=1,dp[2005]; int power(int x,int y){ int ans=1; while(y){ if(y&1) ans=ans*x%mod; x=x*x%mod; y>>=1; } return ans%mod; } signed main(){ cin>>n; dp[0]=1; for(int i=1;i<=n;i++){ dp[i]=dp[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){ cout<<dp[n]<<endl; 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*=dp[a[i]]*power(dp[a[i]/2],mod-2)%mod; res%=mod; } res=res*dp[n/2]%mod; cout<<((dp[n]-res)%mod+mod)%mod<<endl; return 0; } ``` @[WholeCity](/user/550471)
by huangmingyi @ 2023-11-28 17:58:16


|