fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4. using namespace std;
  5.  
  6. void add(unordered_map <int, int>& m, int num, int plus) {
  7. if(!m[num]) {
  8. m[num] = 0;
  9. }
  10.  
  11. m[num] += plus;
  12. }
  13.  
  14. unordered_map <int, int> rasklad(int n) {
  15. unordered_map <int, int> res;
  16.  
  17. while (n % 2 == 0) {
  18. n /= 2;
  19. add(res, 2, 1);
  20.  
  21. }
  22.  
  23. while (n % 3 == 0) {
  24. n /= 3;
  25. add(res, 3, 1);
  26. }
  27.  
  28. for (int i = 5; i * i <= n; i += 6) {
  29. while (n % i == 0) {
  30. n /= i;
  31. add(res, i, 1);
  32. }
  33. }
  34.  
  35. return res;
  36. }
  37.  
  38. int main() {
  39. int n, m;
  40. cin >> n >> m;
  41.  
  42. unordered_map <int, int> n_r = rasklad(n);
  43. unordered_map <int, int> m_r = rasklad(m);
  44. int res = 0;
  45.  
  46. for (auto i : m_r) {
  47. add(n_r, i.first, -i.second);
  48. }
  49.  
  50. for (auto i : n_r) {
  51. res += abs(i.second);
  52. }
  53.  
  54. cout << res;
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0.01s 5268KB
stdin
1434 1434
stdout
Standard output is empty