Cod sursa(job #3187230)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 28 decembrie 2023 11:10:18
Problema GFact Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream>
using namespace std;
ifstream F("gfact.in");
ofstream G("gfact.out");
int p,q,a[10],b[10],j,k,i;
long long c,s,t,r,l;
bool o;
int main()
{
    for(F>>p>>q,c=1LL*p*q,s=1;s<=c;s<<=1);
    for(;!(p&1);p>>=1,++l);
    for(l?a[j]=2,b[j++]=l*q:0,i=3;i*i<=p;i+=2)
        if(p%i==0) {
            for(a[j]=i,b[j]=0;p%i==0;p/=i,++b[j]);
            b[j++]*=q;
        }
    for(p>1?a[j]=p,b[j++]=q:0,t=s;t;!o&&c>=t?c-=t:0,t>>=1)
        for(o=0,k=0;k<j&&!o;l<b[k]?o=1:0,++k)
            for(l=0,r=c-t;r&&l<b[k];r/=a[k],l+=r);
    return G<<c,0;
}