Cod sursa(job #1119077)
| Utilizator | Data | 24 februarie 2014 15:03:37 | |
|---|---|---|---|
| Problema | Zero 2 | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.17 kb |
#include <fstream>
using namespace std;
ifstream fin ("zero2.in");
ofstream fout ("zero2.out");
int d[100010],p[100010],pc[100010],v[100010],m,x,div,i,j,n,b,nc,y;
long long minim, sol;
int main () {
x=10;
while (x--) {
fin>>n>>b;
for (i=1;i<=div;i++)
d[i]=p[i]=pc[i]=v[i]=0;
div=0;
for (i=2;i*i<=b;i++) {
if (b%i==0) {
d[++div]=i;
while (b%i==0){
p[div]++;
b/=i;
}
}
}
if (b!=1){
d[++div]=b;
p[div]=1;
}
for (i=2;i<=n;i++) {
for (j=1;j<=div && d[j]<=i;j++) {
m=0;
y=i;
while (y%d[j]==0) {
y/=d[j];
m++;
}
pc[j]+=v[j]+m;
v[j]+=m;
}
}
minim=(1LL<<62);
for (i=1;i<=div;i++) {
sol=pc[i]/p[i];
if (sol<minim)
minim=sol;
}
fout<<minim<<"\n";
}
return 0;
}
