Pagini recente » Cod sursa (job #906210) | Cod sursa (job #1559924) | Cod sursa (job #144248) | Cod sursa (job #1776459) | Cod sursa (job #1850499)
#include <fstream>
#include <string.h>
#define nMax 100001
#define primeMax 10001
using namespace std;
ifstream fin("chernel.in");
ofstream fout("chernel.out");
int n, Mod, nrPrime;
int viz[nMax], prime[primeMax];
bool ciur[nMax];
void sieve()
{
for(int i=2; i<=n; i++)
{
if(ciur[i]==0)
{
prime[++nrPrime]=i;
for(int j=i+i; j<=n; j+=i)
ciur[j]=1;
}
}
}
void decompose(int nr, int op)
{
while(nr!=1)
{
for(int i=1; i<=nrPrime && nr!=1; i++)
{
while(nr%prime[i]==0 && nr!=1)
{
nr/=prime[i];
switch(op)
{
case 0: viz[prime[i]]++; break;
case 1: viz[prime[i]]--;
}
}
}
}
}
int check()
{
for(int i=1; i<=nrPrime; i++)
if(viz[prime[i]]<0)
return 0;
return 1;
}
void solve()
{
int Sol=0;
if(Mod==1)
Sol++;
decompose(Mod, 1);
for(int k=1; k<=n; k++)
{
decompose(n-k+1, 0);
decompose(k, 1);
Sol+=check();
}
fout<<Sol;
}
int main()
{
fin>>n>>Mod;
n--;
if(n==0)
{
fout<<1;
return 0;
}
sieve();
solve();
}