Pagini recente » Cod sursa (job #2407384) | Cod sursa (job #2182975) | Cod sursa (job #18412) | Cod sursa (job #2284407) | Cod sursa (job #2911163)
#include <fstream>
#define NMAX 5000000
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
int r, d, D[NMAX+1], T[NMAX+1], C[NMAX+1], doi, trei, cinci;
int nr;
int calcul(int n, int prim)
{
///calculeaza putearea la care apare nr prim in n!
int nr=0, p=prim;
while(p<=n)
{
nr+=n/p;
p*=prim;
}
return nr;
}
int main()
{
fin>>r>>d;
for(int i=1; i<=r; i++)
{
D[i]=calcul(i, 2);
T[i]=calcul(i, 3);
C[i]=calcul(i, 5);
}
for(int i=1; i<=r-1; i++)
{
///calculez la ce putere apar 2, 3 si 5 in nr r!/i!(r-i)!
doi=D[r]-D[i]-D[r-i];
trei=T[r]-T[i]-T[r-i];
cinci=C[r]-C[i]-C[r-i];
if(d==2 && doi)
nr++;
if(d==3 && trei)
nr++;
if(d==5 && cinci)
nr++;
if(d==4 && doi>=2)
nr++;
if(d==6 && doi && trei )
nr++;
}
fout<<nr;
///O(rlogr)
return 0;
}