Cod sursa(job #1414848)

Utilizator nnnmmmcioltan alex nnnmmm Data 3 aprilie 2015 09:34:02
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<cstdio>
struct elem{long long baza,putere;};
elem v[25];
long long rasp[25];
int main()
{
 freopen("gfact.in","r",stdin);
 freopen("gfact.out","w",stdout);
 long long p,q;
 scanf("%lld %lld ",&p,&q);
 long long baza=1,nr_elem=0;
 while(baza*baza<=p && p!=1)
       {
        baza++;
        long long put=0;
        while(p%baza==0)
              {
               put++;
               p/=baza;
              }
        if(put>0)
           {
            nr_elem++;
            v[nr_elem].baza=baza;
            v[nr_elem].putere=put;
           }
       }
 if(p!=1)
    {
     nr_elem++;
     v[nr_elem].baza=p;
     v[nr_elem].putere=1;
    }
 for(long long i=1;i<=nr_elem;i++)
     {
      long long o=0;
      for(long long j=1;j<=q*v[i].putere;j++)
          {
           o++;
           long long z=j;
           while(z%v[i].baza==0)
                 {
                  o++;
                  z/=v[i].baza;
                 }
           if(o>=q*v[i].putere)
              {
               rasp[i]=j*v[i].baza;
               j=q*v[i].putere+2;
              }
          }
     }
 long long max=0;
 for(long long i=1;i<=nr_elem;i++)
     if(rasp[i]>max)
        max=rasp[i];
 printf("%lld",max);
return 0;
}