Pagini recente » Cod sursa (job #3216586) | Cod sursa (job #1272623) | Cod sursa (job #1603279) | Cod sursa (job #1414182) | Cod sursa (job #1988547)
#include<fstream>
using namespace std;
ifstream f("zero2.in");
ofstream g("zero2.out");
int N,B,Bputere[100001],Numere[100001],nr;
bool prim(int o){
if(o<2)return false;
for(int d=2;d*d<=o;++d)
if(!(o%d))
return false;
return true;
}
void descompNum(int y[],int U,int &mAx){
int f=2,x=U;
while(f*f<=x){
if(!(U%f)){
mAx=max(mAx,f);
while(!(U%f))U/=f,++y[f];
}
if(f==2)++f;
else f+=2;
}
if(U>1)++y[U],mAx=U;
}
int main()
{
while(f>>N>>B){
if(B==10){
nr=0; int p=5;
while(N/p)nr+=(N/p),p*=p;
g<<nr<<"\n";
}else{
int MaxB=0,MaxN=0;
if(prim(B))++Bputere[B],MaxB=max(MaxB,B);
else descompNum(Bputere,B,MaxB);
for(int i=2;i<=N;++i)
for(int j=2;j<=i;++j)
if(prim(j))++Numere[j],MaxN=max(MaxN,j);
else descompNum(Numere,j,MaxN);
nr=999999999;
for(int i=2;i<=MaxB;++i)
if(Bputere[i])nr=min(nr,Numere[i]/Bputere[i]),Bputere[i]=0;
for(int i=2;i<=MaxN;++i)Numere[i]=0;
g<<nr<<"\n";
}
}
return 0;
}