Advertisement
MinhNGUYEN2k4

THT bac giang

Apr 30th, 2021
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. //Nguyen Huu Hoang Minh
  2. #include <bits/stdc++.h>
  3. #define sz(x) int(x.size())
  4. #define all(x) x.begin(),x.end()
  5. #define reset(x) memset(x, 0,sizeof(x))
  6. #define pb push_back
  7. #define mp make_pair
  8. #define fi first
  9. #define se second
  10. #define N 1000005
  11. #define remain(x) if (x > MOD) x -= MOD
  12. #define ii pair<int, int>
  13. #define iiii pair< ii , ii >
  14. #define viiii vector< iiii >
  15. #define vi vector<int>
  16. #define vii vector< ii >
  17. #define bit(x, i) (((x) >> (i)) & 1)
  18. #define Task "test"
  19. #define int long long
  20.  
  21. using namespace std;
  22.  
  23. typedef long double ld;
  24. const int Mod = 1000000007;
  25. const int minf = -1e10;
  26. const int MM = 1ll*Mod*Mod;
  27. const int base = 101;
  28.  
  29. int l, r;
  30. int ispr[N];
  31. map<int,int> d;
  32. vector<int> prim;
  33.  
  34. int has(vector<int> s)
  35. {
  36.     int dh = 0;
  37.     for(auto x : s)
  38.     {
  39.         dh = (dh*base + x) %Mod;
  40.     }
  41.     return dh;
  42. }
  43.  
  44. void init(int x)
  45. {
  46.     vector<int> v;
  47.     for(auto y : prim)
  48.     {
  49.         if (y > x) break;
  50.         if (x%y==0)
  51.             v.pb(y);
  52.     }
  53.     d[has(v)]++;
  54. }
  55.  
  56. void readfile()
  57. {
  58.     ios_base::sync_with_stdio(false);
  59.     cin.tie(0);cout.tie(0);
  60.     if (fopen(Task".inp","r"))
  61.     {
  62.         freopen(Task".inp","r",stdin);
  63.         //freopen(Task".out","w",stdout);
  64.     }
  65.     cin >> l >> r;
  66.     memset(ispr, 1, sizeof ispr);
  67.     ispr[1] = ispr[0] = 0;
  68.     for(int i=2; i*i <= r; i++)
  69.     {
  70.         if (ispr[i])
  71.         {
  72.             for(int j = i*i; j<=N; j+=i) ispr[j] = 0;
  73.         }
  74.     }
  75.     for(int i=2; i<=r; i++) if (ispr[i]) prim.pb(i);
  76.     for(int i=l; i<=r; i++)
  77.     {
  78.         init(i);
  79.     }
  80. }
  81.  
  82. int C(int n, int k)
  83. {
  84.     int tu = 1;
  85.     for(int i=n-k+1; i<=n; i++) tu *= i;
  86.     return tu/2;
  87. }
  88.  
  89. void proc()
  90. {
  91.     int res = 0;
  92.     for(auto it = d.begin(); it != d.end(); it++)
  93.     {
  94.         int val = it->se;
  95.         if (val >= 2) res += C(val,2);
  96.     }
  97.     cout << res;
  98. }
  99.  
  100. signed main()
  101. {
  102.     readfile();
  103.     proc();
  104.     return 0;
  105. }
  106.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement