Cod sursa(job #838563)
#include <iostream>
#include <fstream>
#define DN 5000005
using namespace std;
int p2[DN],p3[DN],p5[DN],r,d;
void calc()
{
for(int i=1;i<=r;++i)
{
if(i%2==0)
p2[i]=p2[i/2]+1;
if(i%3==0)
p3[i]=p3[i/3]+1;
if(i%5==0)
p5[i]=p5[i/5]+1;
}
for(int i=1;i<=r;++i)
{
p2[i]+=p2[i-1];
p3[i]+=p3[i-1];
p5[i]+=p5[i-1];
}
}
int main()
{
int rez=0;
ifstream f("pascal.in");
ofstream g("pascal.out");
f>>r>>d;
calc();
int k=r+1;
for(int j=1;j<=k/2;++j)
{
// pozitia j si linia r
int a2=0,a3=0,a5=0;
a2 = p2[r]-p2[r-j+1]-p2[r-j];
a3 = p3[r]-p3[r-j+1]-p3[r-j];
a5 = p5[r]-p5[r-j+1]-p5[r-j];
if( ( d==2 && a2>=1 ) || (d==3 && a3>=1) || (d==4 && a2>=2) || (d==5 && a5>=1) || (d==6 && a3>=1 && a2>=1))
rez+=2;
}
if(k%2)
{
int j=r/2+1;
int a2=0,a3=0,a5=0;
a2 = p2[r]-p2[r-j+1]-p2[r-j];
a3 = p3[r]-p3[r-j+1]-p3[r-j];
a5 = p5[r]-p5[r-j+1]-p5[r-j];
if( ( d==2 && a2>=1 ) || (d==3 && a3>=1) || (d==4 && a2>=2) || (d==5 && a5>=1) || (d==6 && a3>=1 && a2>=1))
++rez;
}
g<<rez;
return 0;
}