Pagini recente » Cod sursa (job #630725) | Cod sursa (job #1633373) | Cod sursa (job #2796278) | Cod sursa (job #2294169) | Cod sursa (job #176408)
Cod sursa(job #176408)
#include<fstream.h>
#include<math.h>
long calcexp(long d, long n)
{
long nr=0;long p=0;
while (pow(d,++p)<=n)
nr+=n/(long)pow(d,p);
return nr;
}
long calc(long d, long a)
{
long nr=0;
for (d;a%d==0;nr++,d*=d);
return nr;
}
int main()
{
long r,k,i,nr=0,k1,p,p1;
long d;
ifstream f("pascal.in");
f>>r>>d;
f.close();
if (d==2 || d==3|| d==5) k=calcexp(d,r);
else if (d==4) k=calcexp(2,r);
else {
k=calcexp(2,r);
k1=calcexp(3,r);
}
p=k;p1=k1;
for (i=1;i<=r/2;i++)
if (d==2|| d==3|| d==5) { p=p-calc(d,r-i+1)+calc(d,i);
if (k-p>0) nr++;}
else if (d==4) {
p=p-calc(2,r-i+1)+calc(2,i);
if (k-p>1) nr++;
}
else {
p=p-calc(2,r-i+1)+calc(2,i);
p1=p1-calc(3,r-i+1)+calc(3,r);
if ((k-p) && (k1-p1)) nr++;
}
if (r%2==0) {
nr=2*nr;
if (d==2 || d==3 || d==5 ) {
p=2*calcexp(d,r/2);
if (k-p>0) nr--;
}
else if (d==4) {
p=2*calcexp(2,r/2);
if (k-p>1) nr--;
}
else {
p=calcexp(2,r/2);
p1=calcexp(3,r/2);
if ((k-p>0) && (k1-p1>0)) nr--;
}
}
else nr*=2;
ofstream g("pascal.out");
g<<nr;g.close();
return 0;
}