Pagini recente » Cod sursa (job #1461517) | Cod sursa (job #2781331) | Istoria paginii runda/utcn_grafuri_2 | Cod sursa (job #1322551) | Cod sursa (job #1159528)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin ("pairs.in");
ofstream fout ("pairs.out");
const int N = 136 + 5;
typedef unsigned long long ull;
ull sol;
bitset <N> nok, viz, phi;
int f[N], n, MAX;
int main() {
fin >> n;
for (int x, i = 0; i < n; ++i) {
fin >> x;
viz[x] = 1;
MAX = max(MAX, x);
}
for (int i = 2; i <= MAX; ++i)
if (!phi[i])
for (int j = 1; j <= MAX / i; ++j) {
f[i * j]++;
phi[i * j] = 1;
if (j % i == 0)
nok[i*j] = 1;
}
for (int i = 2; i <= MAX; ++i)
if (!nok[i]) {
ull nr = 0;
for (int j = 1; j <= MAX / i; ++j)
if (viz[i * j])
nr++;
if (f[i] % 2)
sol += nr * (nr - 1) / 2;
else
sol -= nr * (nr - 1) / 2;
}
fout << 1LL * n * (n - 1) / 2 - sol;
}