Pagini recente » Cod sursa (job #792877) | Profil kitchen987 | Cod sursa (job #760261) | Istoria paginii schimbare-borland/ghid/instalare | Cod sursa (job #504167)
Cod sursa(job #504167)
#include <fstream>
using namespace std;
const char InFile[]="pascal.in";
const char OutFile[]="pascal.out";
ifstream fin(InFile);
ofstream fout(OutFile);
int n,d,p2,p3,p5,r2,r3,r5,sol,tr2,tr3,tr5;
inline int legendre(int x,int p)
{
int d=p;
int l=x/d;
int sol=0;
while(l)
{
sol+=l;
d*=p;
l=x/d;
}
return sol;
}
int main()
{
fin>>n>>d;
fin.close();
while(d%2==0)
{
++r2;
d/=2;
}
while(d%3==0)
{
++r3;
d/=3;
}
while(d%5==0)
{
++r5;
d/=5;
}
tr2=legendre(n,2);
tr3=legendre(n,3);
tr5=legendre(n,5);
for(register int j=1;j<(n+1)>>1;++j)
{
p2=tr2-legendre(j,2)-legendre(n-j,2);
p3=tr3-legendre(j,3)-legendre(n-j,3);
p5=tr5-legendre(j,5)-legendre(n-j,5);
if(p2>=r2 && p3>=r3 && p5>=r5)
{
sol+=2;
}
}
if((n-1)%2==1)
{
int j=((n+1)>>1)+1;
p2=tr2-legendre(j,2)-legendre(n-j,2);
p3=tr3-legendre(j,3)-legendre(n-j,3);
p5=tr5-legendre(j,5)-legendre(n-j,5);
if(p2>=r2 && p3>=r3 && p5>=r5)
{
++sol;
}
}
fout<<sol;
fout.close();
return 0;
}