Submission #46
Details and source code
| ID | Time | User | Problem | Lang | Verdict |
|---|---|---|---|---|---|
| 46 | May 09, 2025, 01:39 AM | fuad27 | GCD Subset Challenge | cpp | AC |
Source Code
cpp#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int mod = 1e9 + 7;
long long binpow(long long a, long long b) {
long long res = 1;
while (b) {
if (b & 1) {
res = (res * a) % mod;
}
a = (a * a) % mod;
b /= 2;
}
return res;
}
long long dv[N];
int a[N];
int main() {
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
dv[a[i]]++;
}
for (int i = 1; i < N; i++) {
for (int j = i + i; j < N; j += i)
dv[i] += dv[j];
}
for (int i = N - 1; i >= 1; i--) {
dv[i] = (binpow(2, dv[i])-1+mod)%mod;
for (int j = i + i; j < N; j+=i)
dv[i] = (dv[i] - dv[j] + mod) % mod;
}
cout << dv[1] << "\n";
}