Pagini recente » Cod sursa (job #1051151) | Cod sursa (job #2238501) | Cod sursa (job #1065842) | Cod sursa (job #2398313) | Cod sursa (job #176422)
Cod sursa(job #176422)
#include<fstream.h>
#include<math.h>
long calcexp(int d, long n)
{
long nr=0;int p=0;
while (pow(d,++p)<=n)
nr+=n/(long)pow(d,p);
return nr;
}
int calc(int d, long a)
{
int nr=0;
while (d<=a && a%d==0)
{
a/=d;
nr++;
}
return nr;
}
int main()
{
long r,k,i,nr=0,k1,p,p1;
int 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;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++;
}
ofstream g("pascal.out");
g<<nr;g.close();
return 0;
}