Cod sursa(job #2133056)

Utilizator patcasrarespatcas rares danut patcasrares Data 16 februarie 2018 15:15:03
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#define DN 1000005
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n,b[DN],c[DN],nr,r[DN];
int rez;
int main()
{
    fin>>n;
    for(int i=2;i<=n;i++)
        r[i]=i;
    for(int i=2;i<=n;i++)
    {
        if(c[i]==0)
            c[i]=b[i]=1;
        nr=0;
        if(b[i])
            for(int j=i;j<=n;j+=i)
            {
                nr++;
                if(c[i]%2==1)
                    r[j]-=nr;
                else
                    r[j]+=nr;
                if(j!=i)
                {
                    if(c[i]==1)
                    {
                        c[j]++;
                        if(c[j]>1)
                            b[j]=1;
                    }
                    else
                        if(c[j]==c[i])
                            b[j]=0;
                }
            }
    }
    for(int i=2;i<=n;i++)
        rez+=r[i];
    rez=2*rez+1;
    fout<<rez;
}