Pagini recente » Cod sursa (job #185131) | Cod sursa (job #2128733) | Cod sursa (job #3358206) | Cod sursa (job #799856) | Cod sursa (job #3306323)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
struct PairHash {
size_t operator()(const pair<int,int> &p) const noexcept {
return ((size_t)p.first << 32) ^ (size_t)p.second;
}
};
const int NMAX = 100001;
int n;
int v[NMAX];
unordered_map<pair<int, int>, int, PairHash> gcd;
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
{
fin >> v[i];
}
int ans = 0;
for(int i = 1; i < n; i++)
{
for(int j = i + 1; j <= n; j++)
{
int g;
if(gcd.count({v[i], v[j]}))
{
g = gcd[{v[i], v[j]}];
}
else if(gcd.count({v[j], v[i]}))
{
g = gcd[{v[j], v[i]}];
}
else{
g = __gcd(v[i], v[j]);
gcd[{v[i], v[j]}] = g;
gcd[{v[j], v[i]}] = g;
}
if((v[i] != v[j]) && (g == 1))
{
ans++;
}
}
}
fout << ans;
return 0;
}