Pagini recente » Cod sursa (job #593613) | Cod sursa (job #1844690)
#include <cstdio>
#include <iostream>
using namespace std;
int v[5000002],w[5000002];
int main()
{
FILE *fin=fopen ("pascal.in","r");
FILE *fout=fopen ("pascal.out","w");
int r,d,sol,i,nr,ok,doi,trei;
fscanf (fin,"%d%d",&r,&d);
sol=0;
if (d==2 || d==3 || d==5){
for (i=1;i<=r;i++){
nr=i;
while (nr%d==0){
v[i]++;
nr/=d;
}
//printf ("%d ",v[i]);
v[i]+=v[i-1];
}
}
else if (d==4){
ok=0;
for (i=1;i<=r;i++){
nr=i;
while (nr%2==0){
v[i]++;
nr/=2;
}
v[i]+=v[i-1];
}
}
else {
for (i=1;i<=r;i++){
nr=i;
while (nr%2==0){
v[i]++;
nr/=2;
}
while (nr%3==0){
w[i]++;
nr/=3;
}
v[i]+=v[i-1];
w[i]+=w[i-1];
}
}
for (i=0;i<=r;i++){
if (d==6 && v[r]-v[r-i]-v[i]>0 && w[r]-w[r-i]-w[i]>0)
sol++;
if (d==4 && v[r]-v[r-i]-v[i]>1)
sol++;
else if (d!=6 && d!=4 && v[r]-v[r-i]-v[i]>0)
sol++;
}
fprintf (fout,"%d",sol);
return 0;
}