Pagini recente » Cod sursa (job #2116119) | Cod sursa (job #3261848) | Cod sursa (job #1515369) | Cod sursa (job #29277) | Cod sursa (job #10237)
Cod sursa(job #10237)
#include <stdio.h>
long x[5000001],x2[5000001],x3[5000001],m;
void trans1(long m1)
{
long i,m12=m1;
for(i=2;i<=m12;++i)
{
x[i]=0;
if(m12%i==0)
{
while(m12%i==0)
{
++x[i];
m12/=i;
}
}
}
if(m12!=1)
++x[m12];
}
void trans2(long m1)
{
long i,m12=m1;
for(i=2;i<=m12;++i)
{
x2[i]=0;
if(m12%i==0)
{
while(m12%i==0)
{
++x2[i];
m12/=i;
}
} }
if(m12!=1)
++x2[m12];
}
void trans3(long m1)
{
long i,m12=m1;
for(i=2;i<=m12;++i)
{
x3[i]=0;
if(m12%i==0)
{
while(m12%i==0)
{
++x3[i];
m12/=i;
}
} }
if(m12!=1)
++x3[m12];
}
int ver()
{
for(int i=1;i<=m;++i)
if(x[i])
if(!(x[i]+x2[i]>=x3[i]))
return 0;
return 2;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
register long i,j,n,X=0,n1,m1;
scanf("%ld%ld",&n,&m);
trans3(m);
m1=n+1;
n1=n>>1;
for(i=1;i<=n1;++i)
{
--m1;
trans1(m1);
trans2(i);
X+=ver();
}
if(n&1)
{
--m1;
trans1(m1);
trans2(i);
if(ver())
++X;
}
printf("%ld\n",X);
return 0;
}