Cod sursa(job #2365843)

Utilizator Mada2003Madalina Scarlat Mada2003 Data 4 martie 2019 16:48:21
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<cmath>
#include<bitset>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
const int DN=1e6+6;
const double eps=1e-6;
long long n,k,nr;
int semn,r[DN];
char cnt[DN];
bitset<DN>c;
int pz;
double st,dr,mij,z;
void prec()
{
	for(int i=1;i<=n;i++)
		c[i]=1;
	for(int i=2;i<=n;i++)
	{
		if(cnt[i]==0)
		{
			if(1LL*i*i<=n)
				c[i*i]=0;
			for(int j=i;j<=n;j+=i)
			{
				cnt[j]++;
			}
			continue;
		}
		if(c[i])
			continue;
		for(int j=2*i;j<=n;j+=i)
			c[j]=0;
	}

}
int vf(double val)
{
	for(int i=1;i<=n;i++)
		r[i]=0;
	for(int i=1;i<=n;i++)
		if(c[i])
		{
			semn=1;
			if(cnt[i]%2)
				semn=-1;
			for(int j=i;j<=n;j+=i)
				r[j]+=semn*(j/i);
		}
	nr=0;
	for(int i=1;i<=n;i++)
		nr+=r[i]*2;
	nr--;
	if(nr>=k)
		return 1;
	return 0;
}
int main()
{
	fin>>n;
	prec();
	vf(0);
	fout<<nr;
}