Pagini recente » Cod sursa (job #1616719) | Cod sursa (job #755454) | Cod sursa (job #1987899) | Cod sursa (job #1921742) | Cod sursa (job #3124616)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
const int Nmax=5000000;
int r, d;
long long f1[Nmax+1], f2[Nmax+1];
int main()
{
cin>>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++;
}
cout<<cnt;
return 0;
}