Pagini recente » Cod sursa (job #2797609) | Cod sursa (job #1161788) | Cod sursa (job #2853998) | Cod sursa (job #2818242) | Cod sursa (job #158999)
Cod sursa(job #158999)
#include<stdio.h>
#include<iostream.h>
#define RMAX 5000001
/// f: R / (C*(R-C))
long r,aux,i,j,var;
int d,doi[RMAX],trei[RMAX],cinci[RMAX],sol;
int inline cond(int x2,int x3,int x5)
{if(d==2 && x2>0) return 1;
if(d==3 && x3>0) return 1;
if(d==4 && x2>1) return 1;
if(d==5 && x5>0) return 1;
if(d==6 && x2>0 && x3>0) return 1;
return 0;}
main()
{freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%ld %d",&r,&d);
if(d%2==0)
for(i=1;i<=r;i++)
{aux=i; var=0;
while( (aux&1)==0 ) {aux=(aux>>1); var++;}
for(j=i;j<=r;j++) doi[j]+=var; }
if(d%3==0)
for(i=1;i<=r;i++)
{aux=i; var=0;
while(aux%3==0) {aux/=3; var++;}
for(j=i;j<=r;j++) trei[j]+=var; }
if(d%5==0)
for(i=1;i<=r;i++)
{aux=i; var=0;
while(aux%5==0) {aux/=5; var++;}
for(j=i;j<=r;j++) cinci[j]+=var; }
for(i=0;i<=r;i++)
{int x2=doi[r]-doi[r-i]-doi[i];
int x3=trei[r]-trei[r-i]-trei[i];
int x5=cinci[r]-cinci[r-i]-cinci[i];
if( cond(x2,x3,x5)==1 ) sol++; }
printf("%d\n",int(sol)); }