Cod sursa(job #133888)

Utilizator conttPop Mircea contt Data 9 februarie 2008 22:13:51
Problema Frac Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
//#include <iostream>
using namespace std;
int main()
{
 unsigned long aux_n,n,v[10000],indice,fact,i,p,numarator,fractii;
 ifstream f("frac.in");
 f>>n>>p;
 aux_n=n;
 f.close();
fact=2;indice=0;
 while(n>1)
 {   if (n%fact==0)
     {v[++indice]=fact;
      while(n%fact==0)
         n=n/fact;}
      fact++;
         }
         int ok;
        numarator=1;fractii=1; 
// cout<<"n="<<n;
 n=aux_n;
 //cout<<endl;
 //for(i=1;i<=indice;i++)
  //  cout<<v[i]<<" ";

 //cout<<endl<<"numaratori...";
  while (numarator<n)
  {
  numarator++;
               ok=1;
        for(i=1;i<=indice;i++)
          if (numarator%v[i]==0){ok=0; break;}
        
       if (ok) fractii++;
       }
    //cout<<endl<<"nr fractiilor= "<<fractii<<endl;   
  unsigned long cat=p/fractii,rest=p%fractii;
  
  
  numarator=1;fractii=1; 
  while (fractii<rest)
  {
  numarator++;
               ok=1;
        for(i=1;i<=indice;i++)
          if (numarator%v[i]==0){ok=0; break;}
        
       if (ok) fractii++;
       }
  
  
  
 // cout<<"numarator="<<numarator<<" cat="<<cat<<" rest= "<<rest;
       ofstream g("frac.out");
       
       g<<cat*n+numarator;
       g.close();
        //system("pause");
        return  0;
        }