fork(1) download
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MOD 1000000007
  4. long long fact(long long x)
  5. {
  6. long long f=1;
  7. if(x==0)
  8. return 1;
  9. else
  10. {
  11. for(int i=1;i<=x;i++)
  12. f=f*(i%MOD);
  13. }
  14. return f%MOD;
  15. }
  16. long long square(long long x)
  17. {
  18. return x*x;
  19. }
  20. long long power(long long base,long long expo)
  21. {
  22. if(base==0)
  23. return 0;
  24. if(expo==0)
  25. return 1;
  26. else
  27. {
  28. if(expo%2==0)
  29. return square(power(base,expo/2))%MOD;
  30. else
  31. return (base*power(base,expo-1))%MOD;
  32. }
  33. }
  34. int main()
  35. {
  36. int arr[26];
  37. char ip[1000000];
  38. scanf("%s",ip);
  39. long long num,den=1;
  40. int len=strlen(ip);
  41. for(int i=0;i<len;i++)
  42. arr[ip[i]-'a']++;
  43. for(int i=0;i<26;i++)
  44. arr[i]/=2;
  45. num=fact(len/2);
  46. for(int i=0;i<26;i++)
  47. {
  48. den=den*(fact(arr[i]));
  49. }
  50. den=den%MOD;
  51. den=power(den,MOD-2);
  52. printf("%lld\n",((num%MOD)*(den%MOD))%MOD);
  53. //printf("%lld",fact((long long)5));
  54. }
Success #stdin #stdout 2.59s 3148KB
stdin
Standard input is empty
stdout
0