Pagini recente » Cod sursa (job #2728490) | Cod sursa (job #2319655) | Cod sursa (job #2927868) | Cod sursa (job #2872104) | Cod sursa (job #360438)
Cod sursa(job #360438)
#include<fstream>
using namespace std;
ifstream f1 ("pascal.in");
ofstream f2 ("pascal.out");
int fact[5000001],fact2[5000001];
int ndiv(int k, int d)
{
int s=0;
while (k%d==0) {k/=d; s++;}
return s;
}
int main()
{
int r,d,i,g=0,sol=0;
f1>>r>>d;
if (d==4) {d=2; g=1;}
if (d!=6)
{
for (i=2; i<=r; i++) fact[i]=fact[i-1]+ndiv(i,d);
if (g==1) for (i=2; i<=r; i++) fact[i]/=2;
}
else
{
for (i=2; i<=r; i++) fact[i]=fact[i-1]+ndiv(i,2);
for (i=2; i<=r; i++) fact2[i]=fact2[i-1]+ndiv(i,3);
}
//for (i=0; i<=r; i++) f2<<fact[r]-fact[r-i]-fact[i]<<" "<<fact2[r]-fact2[r-i]-fact2[i]<<endl;
if (d!=6)
for (i=1; i<=r; i++)
if (fact[r]-fact[r-i]-fact[i]>0) sol++;
else ;
else
for (i=1; i<=r; i++)
if (fact[r]-fact[r-i]-fact[i]>0 && fact2[r]-fact2[r-i]-fact2[i]>0) sol++;
f2<<sol;
return 0;
}