Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int ms = 1025000;
  4. int f[ms], mark[ms], d[ms];
  5. typedef pair<int, int> pii;
  6. vector<pii> v;
  7.  
  8. int main(){
  9.     for(int i = 0; i < ms; i++)
  10.         f[i] = i;
  11.  
  12.     memset(mark, 0, sizeof mark);
  13.     for(int i = 2; i < ms; i++)
  14.         if(!mark[i])
  15.             for(int j = i; j < ms; j += i){
  16.                 mark[j] = true;
  17.                 f[j] -= f[j]/i;
  18.             }
  19.  
  20.     for(int i = 1; i < ms; i++){
  21.         int ans = 0, at = i;
  22.         for(; at != 1; at = f[at])
  23.             ans++;
  24.  
  25.         v.push_back({ans, i});
  26.     }
  27.  
  28.     sort(v.begin(), v.end());
  29.     int q, n, m, k;
  30.     cin >> q;
  31.     for(int i = 0; i < q; i++){
  32.         scanf("%d%d%d" , &n, &m, &k);
  33.         int ans = upper_bound(v.begin(), v.end(), pii(k, m))-lower_bound(v.begin(), v.end(), pii(k, n));
  34.         cout << ans << endl;
  35.     }
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement