Cod sursa(job #524397)
#include<stdio.h>
#include<math.h>
int prim[ ]={2,3,5};
int nr[ 3] ;
void func( int x,int k )
{
for(int i=0;i<=2;++i)
{
while( x % prim[i ] == 0)
{
nr[ i ] += k;
x/= prim[i];
}
}
}
int D, last;
long long R,n;
int main()
{
long long i;
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%lld%d",&R,&D);
for(i=1;i<=(R-1)/2 + (R-1) % 2;i++)
{
int aux = n;
func( R - i + 1 , 1);
func( i , -1 );
if(D==6)
if(nr[1]>=1 && nr[0]>=1)
n++;
if(D==5)
if(nr[2]>=1)
n++;
if(D==4)
if(nr[0]>=2)
n++;
if(D==3)
if(nr[1]>=1)
n++;
if(D==2)
if(nr[0]>=1)
n++;
last = n - aux;
}
if( (R -1 ) % 2 == 1)
n = n * 2 - last;
else n = n * 2;
printf("%lld\n",n);
return 0;
}