Advertisement
_rashed

101982B Coprime Integers

Jul 30th, 2022
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1.     #define ll long long
  2.     #include <bits/stdc++.h>
  3.     using namespace std;
  4.      
  5.     const int OO = 1e9;
  6.     const double EPS = 1e-9;
  7.     const int MAX = 10000001;
  8.     int mob[MAX];
  9.     int cnt[2][MAX];
  10.     bool is_prime[MAX];
  11.      
  12.     void pre() {
  13.         for(int i = 0; i < MAX; i++) {
  14.             is_prime[i] = mob[i] = 1;
  15.         }
  16.         is_prime[0] = is_prime[1] = 0;
  17.         for(int i = 2; i < MAX; i++) {
  18.             if(is_prime[i]) {
  19.                 mob[i] = -1;
  20.                 for(int j = i*2; j < MAX; j+=i) {
  21.                     mob[j] *= -1;
  22.                     is_prime[j] = false;
  23.                     if((j/i)%i == 0) {
  24.                         mob[j] = 0;
  25.                     }
  26.                 }
  27.             }
  28.         }
  29.     }
  30.      
  31.     int main()
  32.     {
  33.         ios_base::sync_with_stdio(NULL);
  34.         cin.tie(0);
  35.         cout.tie(0);
  36.         pre();
  37.         int a,b,c,d;
  38.         cin >> a >> b >> c >> d;
  39.         for(int i = 2; i < MAX; i++) {
  40.             cnt[0][i] += (i >= a && i <= b);
  41.             cnt[1][i] += (i >= c && i <= d);
  42.             for(int j = i*2; j < MAX; j += i) {
  43.                 cnt[0][i] += (j >= a && j <= b);
  44.                 cnt[1][i] += (j >= c && j <= d);
  45.             }
  46.         }
  47.         ll ans = 1ll*(b-a+1)*(d-c+1);
  48.         for(int i = 2; i < MAX; i++) {
  49.             ans = ans + 1ll * mob[i] * cnt[0][i] * cnt[1][i];
  50.         }
  51.         cout << ans << "\n";
  52.         return 0;
  53.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement