Cod sursa(job #2488052)

Utilizator blackmanta45Andrei blackmanta45 Data 6 noiembrie 2019 01:01:36
Problema Fractii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <string.h>
#define DIM 1000000
using namespace std;
ifstream fin ("fractii.in");
ofstream fout("fractii.out");
long long x,i,j,c,n,sol,k,y;
bool a[1000010];
int v[1000010],p[80000];
int main () {
    fin>>n;
    for(i=2;i<=n;i++)
        if(v[i]==0){
            p[++k]=i;
            v[i]=i-1;
            sol+=v[i];
            for(j=i+i;j<=n;j+=i)
                v[j]=1;
        }else{
            x=i;
            for(j=1;j<=k;j++){
                if(x%p[j]==0 && x/p[j]>1){
                    y=x;
                    c=0;
                    while(y%p[j]==0)
                        y/=p[j],c++;
                    if(y==1){
                        v[i]=x/p[j]*(p[j]-1);
                        sol+=v[i];
                        break;
                    }
                    v[i]=(p[j]-1)*v[y]*(x/y/p[j]);
                    sol+=v[i];
                    break;
                }else if(x%p[j]==0 && x/p[j]==1){
                    v[i]=i-1;
                    sol+=v[i];
                    break;
                }
            }
        }
    fout<<sol*2+1;
}