Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define ld long double
- #define len(v) (int)v.size()
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- #define pii pair<int, int>
- #define vi vector<int>
- #define vii vector<vector<int>>
- #define vpii vector<pair<int, int>>
- #define ull unsigned long long
- //#define int long long
- const int N = 1e6 + 1;
- const int maxn = 5e6 + 10;
- const int C = 20;
- const int logn = 20;
- const ll inf = 1e9;
- const ll mod = 1e9 + 7;
- const int M = 1e9;
- const ull M2 = 998244353;
- const ld eps = 1e-6;
- using namespace std;
- template<class T>
- istream &operator>>(istream &in, vector<T> &a) {
- for (auto &i : a)
- in >> i;
- return in;
- }
- template<class T>
- ostream &operator<<(ostream &out, vector<T> &a) {
- for (auto &i : a)
- out << i << ' ';
- return out;
- }
- ll gcd(ll a, ll b) {
- return b ? gcd(b, a % b) : a;
- }
- ll binpow(ll a, ll n, ll m) {
- if (n == 0ll) return 1ll;
- else if (n % 2 == 1) {
- return ((((binpow(a, n - 1ll, m) % m + m) % m) * a) % m + m) % m;
- } else {
- ll d = (binpow(a, n / 2, m) % m + m) % m;
- return ((d * d) % m + m) % m;
- }
- }
- void solve() {
- int n; cin >> n;
- vi a(n); cin >> a;
- int k = *max_element(all(a)) + 1;
- vector<vector<int>> del(k);
- for (int i = 1; i < k; ++i) {
- for (int j = i; j < k; j += i) {
- del[j].push_back(i);
- }
- }
- vector<int> cnt(k);
- vector<int> cntel(k, 0), boolel(k, 0);
- for (int i = 0; i < n; ++i)
- cntel[a[i]]++;
- for (int i = 0; i < n; ++i) {
- if (boolel[a[i]]) continue;
- for (int j : del[a[i]]) {
- cnt[j] += cntel[a[i]];
- }
- boolel[a[i]] = 1;
- }
- vector<long long> ans(k);
- for (int i = 0; i < k; ++i) {
- ans[i] = 1ll * cnt[i] * (cnt[i] - 1) / 2;
- }
- for (int i = k - 1; i >= 0; --i) {
- for (int j : del[i]) {
- if (j != i) {
- ans[j] -= ans[i];
- }
- }
- }
- cout << ans[1];
- }
- signed main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- int T = 1;
- //cin >> T;
- while (T--)
- solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement