Pagini recente » Cod sursa (job #1348360) | Cod sursa (job #213616) | Cod sursa (job #26936)
Cod sursa(job #26936)
#include <iostream.h>
#include <stdio.h>
//#include <math.h>
int main(){
FILE *f1,*f2;
f1=fopen("zero2.in","r");
f2=fopen("zero2.out","w");
long long pr[20000];
long long n,b,i,j,t,ok,q,x[100],p[100],r,nr,s[100],rap;
double g;
pr[1]=2;pr[2]=3;
q=2;
i=3;
while (i<33000){
do{
i+=2;
ok=1;
j=1;
while (pr[j]*pr[j]<=i){
if (i%pr[j]==0){ok=0;break;}
j++;
}
}while (ok==0);
q++;
pr[q]=i;
}
t=10;
for (;t>0;t--){
fscanf(f1,"%lld",&n);
fscanf(f1,"%lld",&b);
nr=0;i=1;
while (b>1){
if (b%pr[i]==0){
nr++;
x[nr]=pr[i];
p[nr]=1;
b=b/pr[i];
while (b%pr[i]==0){p[nr]++;b=b/pr[i];}
}
else if(pr[i]*pr[i]>b){nr++;x[nr]=b;p[nr]=1;b=1;}
i++;
//fprintf(f2,"gfg");
}
//fprintf(f2,"gfg");
for (i=1;i<=nr;i++){
j=1;s[i]=0;
r=x[i];
while (r<=n){
g=(double)(n-r+1)/r;
if (r)s[i]+=r*((long long)g)*((long long)g+1)/2;
//fprintf(f2,"%ld ",s[i]);
s[i]+=(double)(g-(long long)g)*((long long)g+1)*r;
//fprintf(f2,"*%ld\n",s[i]);
r*=x[i];
}
}
//for (i=1;i<=nr;i++)fprintf(f2,"* %ld *",x[i]);
rap=1000000000;
rap=(long long)rap*1000000000;
for (i=1;i<=nr;i++)if (p[i])if (s[i]/p[i]<rap)rap=(long long)s[i]/p[i];
fprintf(f2,"%Ld\n",rap);
}
fclose(f1);
fclose(f2);
return 0;
}