Cod sursa(job #315305)

Utilizator funkydvdIancu David Traian funkydvd Data 14 mai 2009 22:49:46
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream.h>
//using namespace std;
ifstream f1 ("gfact.in");
ofstream f2 ("gfact.out");
int main()
{
  long long p,q,pute[1000001][2],nr,k,fl,l,i,j,st,dr,f,put,t,max=0;
  f1>>p>>q;
  j=0;
  for (i=2; i*i<=p; i++)
  {
    nr=0;
    while (p%i==0) {p/=i; nr++;}
    if (nr!=0) {j++; pute[j][0]=i; pute[j][1]=nr;}
  }
  if (p>1) {j++; pute[j][0]=p; pute[j][1]=1;}
  for (i=1; i<=j; i++) pute[j][1]*=q;
  for (i=1; i<=j; i++)
  {
    fl=0;
    while (fl==0&&st<dr)
    {
     st=1;
     dr=pute[i][1];
     k=st+dr/2;
     put=0;
     f=1;
     l=k*pute[i][0];
     t=pute[i][0];
     while (f==1)
      {
       put+=l/t;
       t*=pute[i][0];
       if (l/t==0) f=0;
      }
     if (put>pute[i][1]) dr=k-1;
     if (put<pute[i][1]) st=k+1;
     if (put==pute[i][1]) fl=1;
     cout<<st<<" "<<dr<<" ";
    }
    if (l>max) max=l;

  }
  f2<<max;
  return 0;
}