Cod sursa(job #730063)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 2 aprilie 2012 21:25:30
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;
#define nmax 1000010

int fi[nmax];//fi[x]=indicatorul lui euler(x)

int main(){
   ifstream fin("fractii.in");
   ofstream fout("fractii.out");
   int n;
   int i;
   fin>>n;
   fin.close();
   for(i=1;i<=n;i++)
    fi[i]=i-1;//pt ca numarul e prim si fi(x)=x-1
   int j;
   long long rez=0;
   for(i=1;i<=n;i++){
     for(j=i<<1;j<=n;j+=i){
       fi[j]-=fi[i];
     }
     rez+=fi[i];
   }
   //acum rez este suma indicatorilor lui euler
   rez=(rez<<1)+1;//adun un 1 pt fractia 1/1
   //inmultesc rez cu 2, pt ca daca o fractia a/b subunitara e ireductibila, si b/a e ireductibila
   fout<<rez<<endl;
   fout.close();
return 0;
}