Cod sursa(job #291508)

Utilizator vlasceanuVlasceanu Razvan vlasceanu Data 29 martie 2009 22:32:17
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;



int main(int argc, char *argv[])
{
    unsigned long nrFractii=1;
    int n,d,p,cop;
    freopen("fractii.in","r",stdin);
    scanf("%i",&n);
    bool a[n];
    long int  t[n];
    for(int i=2;i<=n;i++)
    if (a[i]==0) for(int j=2; j<= n/i;j++) a[i*j]=1;
    for(int i=1;i<=n;i++)
    {
      if(a[i]==0) t[i]=i-1;
      else{d=2;
      while(i%d!=0) d++;
      p=1;
      cop=i;
      while(cop%d==0)
      {
        cop/=d;
        p*=d;             
      } 
      if(cop==1) t[i]=i-(i/d);
      else t[i]=t[p]*t[cop];}
      nrFractii+=t[i];     
    } 
    freopen("fractii.out","w",stdout);      
    std::cout<<nrFractii*2-1;
    fclose(stdin);
    fclose(stdout);
return 0;    
}