Pagini recente » Cod sursa (job #2450223) | Cod sursa (job #941436) | Cod sursa (job #2309744) | Cod sursa (job #1457223) | Cod sursa (job #965147)
Cod sursa(job #965147)
#include <cstdio>
#include<algorithm>
#define N 5000001
using namespace std;
int n,d,i,p,sol,e2[N],e3[N],e5[N];
void exp2(),exp3(),exp5();
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d%d",&n,&d);
if(d%2==0)exp2();if(d%3==0)exp3();if(d%5==0)exp5();
if(d==6)
{
for(i=0;i<n-i;i++)if(min(e2[n]-e2[i]-e2[n-i],e3[n]-e3[i]-e3[n-i]))sol+=2;
if(i==n-i&&min(e2[n]-e2[i]-e2[n-i],e3[n]-e3[i]-e3[n-i]))sol++;
}
if(d==4)
{
for(i=0;i<n-i;i++)if((e2[n]-e2[i]-e2[n-i])/2)sol+=2;
if(i==n-i&&(e2[n]-e2[i]-e2[n-i])/2)sol++;
}
if(d==2)
{
for(i=0;i<n-i;i++)if(e2[n]-e2[i]-e2[n-i])sol+=2;
if(i==n-i&&e2[n]-e2[i]-e2[n-i])sol++;
}
if(d==3)
{
for(i=0;i<n-i;i++)if(e3[n]-e3[i]-e3[n-i])sol+=2;
if(i==n-i&&e3[n]-e3[i]-e3[n-i])sol++;
}
if(d==5)
{
for(i=0;i<n-i;i++)if(e5[n]-e5[i]-e5[n-i])sol+=2;
if(i==n-i&&e5[n]-e5[i]-e5[n-i])sol++;
}
printf("%d\n",sol);
return 0;
}
void exp2()
{
for(p=2;p<=n;p*=2)
for(i=p;i<=n;i+=p)e2[i]++;
for(i=1;i<=n;i++)e2[i]+=e2[i-1];
}
void exp3()
{
for(p=3;p<=n;p*=3)
for(i=p;i<=n;i+=p)e3[i]++;
for(i=1;i<=n;i++)e3[i]+=e3[i-1];
}
void exp5()
{
for(p=5;p<=n;p*=5)
for(i=p;i<=n;i+=p)e5[i]++;
for(i=1;i<=n;i++)e5[i]+=e5[i-1];
}