Advertisement
vladm98

Untitled

Sep 21st, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. int v[19];
  5. long long dp[524300][20];
  6. int rest[300];
  7. int main()
  8. {
  9. ifstream fin ("ratphu.in");
  10. ofstream fout ("ratphu.out");
  11. long long n;
  12. int p;
  13. fin >> n >> p;
  14. int nr_cifre=0;
  15. for (int i = 0; i<300; ++i)
  16. rest[i] = i%p;
  17. while (n)
  18. {
  19. v[nr_cifre]=n%10;
  20. ++nr_cifre;
  21. n/=10;
  22. }
  23.  
  24. dp[0][0]=1;
  25. int m = (1<<(nr_cifre))-1;
  26. for (int i = 0; i<m; ++i)
  27. {
  28. for (int j = 0; j<p; ++j)
  29. {
  30. if (dp[i][j])
  31. {
  32. for (int k=0; k<nr_cifre; ++k)
  33. {
  34. if ((i&(1<<k))==0)
  35. {
  36. dp[i|(1<<k)][rest[j*10+v[k]]]+=dp[i][j];
  37. }
  38. }
  39. }
  40. }
  41. }
  42. fout << dp[m][0];
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement