Pagini recente » Cod sursa (job #808243) | Cod sursa (job #799597) | Cod sursa (job #571673) | Cod sursa (job #3158017) | Cod sursa (job #2342381)
#include <fstream>
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
struct chestie
{
int val, exp;
};
chestie p[2];
int r, d, ex[2], k, j, nr, a;
int exponent(int a, int b)
{
int k=0;
while(a%b==0)
{
a=a/b;
k++;
}
return k;
}
void rutina()
{
for(int l=0;l<=k;l++)
{
ex[l]+=exponent(r-j+1, p[l].val);
ex[l]-=exponent(j, p[l].val);
}
bool ok=1;
for(int l=0;l<=k;l++)
if(ex[l]<p[l].exp)
{
ok=0;
break;
}
if(ok)
nr++;
}
int main()
{
fin >> r >> d;
if(r<2)
{
fout << 0;
return 0;
}
a=2;
k=-1;
while(a*a<=d)
{
if(d%a==0)
{
k++;
p[k].val=a;
while(d%a==0)
{
d=d/a;
p[k].exp++;
}
}
a++;
}
if(d!=0)
{
k++;
p[k].val=d;
p[k].exp=1;
}
for(j=1;j<=(r-1)/2;j++)
rutina();
nr=nr*2;
if(r%2==0)
rutina();
fout << nr;
return 0;
}