Pagini recente » Cod sursa (job #535533) | Solutii preONI 2007, Runda 4 | Cod sursa (job #2931291) | Cod sursa (job #947095) | Cod sursa (job #2365843)
#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;
}