Pagini recente » Cod sursa (job #1734999) | Cod sursa (job #790278) | Cod sursa (job #76513) | Cod sursa (job #498404) | Cod sursa (job #3249122)
#include <fstream>
#include <string.h>
#include <vector>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <deque>
using namespace std;
ifstream cin("pairs.in");
ofstream cout("pairs.out");
long long n, x;
unordered_map<long long, long long> M;
vector<long long> dp;
long long maxi;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> x;
M[x]++;
maxi = max(maxi, x);
}
dp.resize(maxi + 1);
for (int i = maxi; i >= 1; i--)
{
long long s = 0;
dp[i] = M[i];
for (int j = i + i; j <= maxi; j = j + i)
{
dp[i] = dp[i] + M[j];
s = s + dp[j];
}
dp[i] = (dp[i] * (dp[i] - 1)) / 2 - s;
}
cout << dp[1];
return 0;
}