Pagini recente » Cod sursa (job #1780352) | Cod sursa (job #3040436) | Cod sursa (job #721094) | Cod sursa (job #1067842) | Cod sursa (job #3124625)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
const int Nmax=5000000;
int r, d;
int f1[Nmax+1], f2[Nmax+1];
int main()
{
fin>>r>>d;
f1[0]=f1[1]=f2[0]=f2[1]=0;
for (int i=2; i<=r; i++){
int aux=i;
if (d==2 || d==3 || d==5)
while (aux%d==0){
aux/=d;
f1[i]++;
}
else if (d==4)
while (aux%2==0){
aux/=2;
f1[i]++;
}
else{
while (aux%2==0){
aux/=2;
f1[i]++;
}
aux=i;
while (aux%3==0){
aux/=3;
f2[i]++;
}
}
f1[i]+=f1[i-1];
f2[i]+=f2[i-1];
}
int cnt=0;
for (int i=0; i<=r; i++){
if (((d==2) || (d==3) || (d==5)) && (f1[r]-f1[i]-f1[r-i]>0))
cnt++;
else if ((d==4) && (f1[r]-f1[i]-f1[r-i]>1))
cnt++;
else if ((d==6) && (f1[r]-f1[i]-f1[r-i]>0) && (f2[r]-f2[i]-f2[r-i]>0))
cnt++;
}
fout<<cnt;
return 0;
}