Cod sursa(job #2749008)

Utilizator MciprianMMciprianM MciprianM Data 4 mai 2021 16:59:08
Problema Fractii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <vector>

static constexpr int MAXN = 1000009;
static constexpr int MAXD = 10;
int v[MAXN][MAXD];
int sz[MAXN];

int main()
{
	std::ifstream f("fractii.in");
	int n;
	f >> n;
	f.close();
	long long sum = 0;
	for (int i = 2; i <= n; i++)
	{
		if (sz[i] == 0)
		{
			for (int j = i; j <= n; j += i)
			{
				v[j][sz[j]++] = i;
			}
		}
		int s = sz[i];
		for (int j = 1; j < (1 << s); j++)
		{
			int sgn = -1, prod = 1;
			for (int k = 0; k < s; k++)
			{
				if (j & (1 << k))
				{
					prod *= v[i][k];
					sgn *= -1;
				}
			}
			sum += ((sgn) * ((n / prod) - (i / prod)));
		}
	}
	sum = (n * 1ll * n) - (sum * 2 + n) + 1;
	std::ofstream g("fractii.out");
	g << sum << std::endl;
	g.close();
	return 0;
}