Advertisement
a53

abk1k2

a53
Jan 17th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. /* Bogdan Iordache
  2. * O(logVMAX)
  3. */
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6.  
  7. int main() {
  8. #ifndef LOCAL
  9. ifstream cin("abk1k2.in");
  10. ofstream cout("abk1k2.out");
  11. #endif
  12. int a, b, k1, k2;
  13. cin >> a >> b >> k1 >> k2;
  14. assert(1 <= a && a <= b && b <= 1000000000);
  15. assert(2 <= k1 <= k2 <= 1000000000);
  16.  
  17. long long cnt_k1 = b / k1 - (a - 1) / k1;
  18. long long cnt_k2 = b / k2 - (a - 1) / k2;
  19. long long cnt = cnt_k1 * (cnt_k1 - 1) / 2 + cnt_k2 * (cnt_k2 - 1) / 2;
  20.  
  21. long long cmmmc = 1LL * k1 * k2;
  22. while (k1) {
  23. int r = k2 % k1;
  24. k2 = k1;
  25. k1 = r;
  26. }
  27. cmmmc /= k2;
  28.  
  29. long long cnt_cmmmc = b / cmmmc - (a - 1) / cmmmc;
  30. cnt -= cnt_cmmmc * (cnt_cmmmc - 1) / 2;
  31.  
  32. cout << cnt << '\n';
  33.  
  34. return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement