Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
- for (int i = 0; i < n; ++i) {
- for (int j : del[a[i]]) {
- cnt[j]++;
- }
- }
- 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];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement