a53

PCR

a53
Apr 21st, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. int i, n, imp;
  5. long long f[20], sol, sol0, v[10];
  6. char s[50];
  7.  
  8. int main()
  9. {
  10. // calcul factoriale
  11. f[0] = 1;
  12. for(i = 1; i <= 19; i++)
  13. f[i] = f[i-1] * i;
  14. cin >> s;
  15. n = strlen(s);
  16. // calcul frecventa cifre
  17. for(i = 0; i < n; i++)
  18. v[s[i]-'0']++;
  19. // verificare cifre cu numar impar de aparitii
  20. imp = 0;
  21. for(i = 0; i <= 9; i++)
  22. if(v[i] % 2 == 1) imp++;
  23. sol = 0;
  24. if(imp < 2)
  25. {
  26. // calcul total palindroame
  27. sol = f[n/2];
  28. for(i = 0; i <= 9; i++)
  29. if(v[i] > 0) sol = sol / f[v[i]/2];
  30. //calcul nr palindroame ce incep cu 0
  31. if(v[0] >= 2)
  32. {
  33. v[0] = v[0] - 2;
  34. sol0 = f[n/2-1];
  35. for(i = 0; i <= 9; i++)
  36. if(v[i] > 0) sol0 = sol0 / f[v[i]/2];
  37. sol = sol - sol0;
  38. }
  39. }
  40. cout << sol;
  41. return 0;
  42. }
Add Comment
Please, Sign In to add comment