Pagini recente » Cod sursa (job #1382620) | Cod sursa (job #1719753) | Cod sursa (job #2282157) | Cod sursa (job #2207726) | Cod sursa (job #2115359)
#include <bits/stdc++.h>
#define INF 2140000000
#define MOD 1000000007
#define MaxN 5000005
using namespace std;
FILE*IN=fopen("pascal.in","r"),*OUT=fopen("pascal.out","w");
int R,D,Ans=0,d[3][MaxN];
int main()
{
fscanf(IN,"%d%d",&R,&D);
if(D%2==0)
{
for(int i=2;i<=R;i*=2)
for(int j=i;j<=R;j+=i)
d[0][j]++;
}
if(D%3==0)
{
for(int i=3;i<=R;i*=3)
for(int j=i;j<=R;j+=i)
d[1][j]++;
}
if(D%5==0)
{
for(int i=5;i<=R;i*=5)
for(int j=i;j<=R;j+=i)
d[2][j]++;
}
for(int i=1;i<=R;i++)
d[0][i]+=d[0][i-1],d[1][i]+=d[1][i-1],d[2][i]+=d[2][i-1];
for(int i=0;i<=R;i++)
{
if(D==6) Ans+=(d[0][R]-d[0][i]-d[0][R-i]>0)&&(d[1][R]-d[1][i]-d[1][R-i]>0);
else if(D==4)Ans+=(d[0][R]-d[0][i]-d[0][R-i]>1);
else if(D==2)Ans+=(d[0][R]-d[0][i]-d[0][R-i]>0);
else if(D==3)Ans+=(d[1][R]-d[1][i]-d[1][R-i]>0);
else Ans+=(d[2][R]-d[2][i]-d[2][R-i]>0);
}
fprintf(OUT,"%d",Ans);
return 0;
}