Pagini recente » Cod sursa (job #3233464) | Cod sursa (job #601634) | Cod sursa (job #2297078) | Cod sursa (job #862664) | Cod sursa (job #1849269)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p[101],d[101],c;
int pt, q;
void desc(long long n)
{
long long div=2,nr=0;
while(div * div <= n) {
if(n%div==0) {
nr=0;
while(n%div==0) {
n/=div;
nr++;
}
d[++c]=div;
p[c]=nr;
}
div++;
}
if (n != 1) {
d[++c] = n;
p[c] = 1;
}
}
long long putere(long long n,int d)
{
long long s = 0;
while(d<=n) {
s += n/d;
n /= d;
}
return s;
}
bool fact(long long n)
{
for(int i=1; i<=c; i++) {
if(putere(n,d[i])<(long long)p[i]*q) {
return false;
}
}
return true;
}
void cautare()
{
long long pas=1LL<<60,r=0;
while(pas!=0) {
if(!fact(r+pas)) {
r+=pas;
}
pas/=2;
}
fout << 1 + r;
}
int main()
{
fin>>pt>>q;
desc(pt);
cautare();
return 0;
}