Cod sursa(job #2749007)

Utilizator MciprianMMciprianM MciprianM Data 4 mai 2021 16:54:37
Problema Fractii Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <vector>
int main()
{
	std::ifstream f("fractii.in");
	int n;
	f >> n;
	f.close();
	std::vector<std::vector<int>> v;
	v.resize(n + 1);
	long long sum = 0;
	for (int i = 2; i <= n; i++)
	{
		if (v[i].size() == 0)
		{
			for (int j = i; j <= n; j += i)
			{
				v[j].push_back(i);
			}
		}
		int s = v[i].size();
		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;
}