Advertisement
trafik

Untitled

Oct 3rd, 2022
1,009
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ld long double
  4. #define len(v) (int)v.size()
  5. #define all(v) v.begin(), v.end()
  6. #define rall(v) v.rbegin(), v.rend()
  7. #define pii pair<int, int>
  8. #define vi vector<int>
  9. #define vii vector<vector<int>>
  10. #define vpii vector<pair<int, int>>
  11. #define ull unsigned long long
  12. //#define int long long
  13. const int N = 1e6 + 1;
  14. const int maxn = 5e6 + 10;
  15. const int C = 20;
  16. const int logn = 20;
  17. const ll inf = 1e9;
  18. const ll mod = 1e9 + 7;
  19. const int M = 1e9;
  20. const ull M2 = 998244353;
  21. const ld eps = 1e-6;
  22. using namespace std;
  23.  
  24. template<class T>
  25. istream &operator>>(istream &in, vector<T> &a) {
  26.     for (auto &i : a)
  27.         in >> i;
  28.     return in;
  29. }
  30.  
  31. template<class T>
  32. ostream &operator<<(ostream &out, vector<T> &a) {
  33.     for (auto &i : a)
  34.         out << i << ' ';
  35.     return out;
  36. }
  37.  
  38. ll gcd(ll a, ll b) {
  39.     return b ? gcd(b, a % b) : a;
  40. }
  41.  
  42. ll binpow(ll a, ll n, ll m) {
  43.     if (n == 0ll) return 1ll;
  44.     else if (n % 2 == 1) {
  45.         return ((((binpow(a, n - 1ll, m) % m + m) % m) * a) % m + m) % m;
  46.     } else {
  47.         ll d = (binpow(a, n / 2, m) % m + m) % m;
  48.         return ((d * d) % m + m) % m;
  49.     }
  50. }
  51.  
  52. void solve() {
  53.     int n; cin >> n;
  54.     vi a(n); cin >> a;
  55.     int k = *max_element(all(a)) + 1;
  56.  
  57.     vector<vector<int>> del(k);
  58.     for (int i = 1; i < k; ++i) {
  59.         for (int j = i; j < k; j += i) {
  60.             del[j].push_back(i);
  61.         }
  62.     }
  63.     vector<int> cnt(k);
  64.     vector<int> cntel(k, 0), boolel(k, 0);
  65.     for (int i = 0; i < n; ++i)
  66.         cntel[a[i]]++;
  67.     for (int i = 0; i < n; ++i) {
  68.         if (boolel[a[i]]) continue;
  69.         for (int j : del[a[i]]) {
  70.             cnt[j] += cntel[a[i]];
  71.         }
  72.         boolel[a[i]] = 1;
  73.     }
  74.     vector<long long> ans(k);
  75.     for (int i = 0; i < k; ++i) {
  76.         ans[i] = 1ll * cnt[i] * (cnt[i] - 1) / 2;
  77.     }
  78.     for (int i = k - 1; i >= 0; --i) {
  79.         for (int j : del[i]) {
  80.             if (j != i) {
  81.                 ans[j] -= ans[i];
  82.             }
  83.         }
  84.     }
  85.     cout << ans[1];
  86. }
  87.  
  88. signed main() {
  89.     ios::sync_with_stdio(false);
  90.     cin.tie(nullptr);
  91.     cout.tie(nullptr);
  92.  
  93.     int T = 1;
  94.     //cin >> T;
  95.     while (T--)
  96.         solve();
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement