2004 NPSC A. 迴文數目
作法 : 重複排列
首先每個字母的出現次數先加總
若有2個次數以上的出現次數為奇數 答案則為0
不是的話,拿一半做重複排列...
/**********************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n;
long long int math[21],a;
math[0]=1;
for(a=1;a<21;a++)
math[a]=math[a-1]*a;
while(scanf("%d",&n)==1)
while(n--)
{
char s[50];
scanf("%s",s);
int m=strlen(s),num[26]={0};
for(a=0;a<strlen(s);a++)
num[s[a]-'a']++;
int time=0,sum=0;
for(a=0;a<26;a++)
{
if(num[a]%2==1) time++;
sum=sum+num[a];
}
if(time>=2) printf("0\n");
else
{
sum=(sum-time)/2;
long long int ans=math[sum];
for(a=0;a<26;a++)
ans=ans/math[num[a]/2];
printf("%lld\n",ans);
}
}
return 0;
}
上一篇:2008 NPSC C. 咒語
下一篇:2005 NPSC F. P方陣