Pagini recente » Cod sursa (job #2083867) | Cod sursa (job #977389) | Cod sursa (job #410883) | Cod sursa (job #2368012) | Cod sursa (job #3155385)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("pascal.in");
ofstream g ("pascal.out");
const int NMAX = 5e6 + 5;
short d[6][NMAX+5];
int trim(int val, int dv){
int p = 0;
while(val % dv == 0)
p ++, val /= dv;
return p;
}
void precalcul(){
for(int i=2; i<=5; i++)
for(int j=i; j<=NMAX; j+=i)
d[i][j] = trim(j, i);
for(int i=2; i<=5; i++)
for(int j=1; j<=NMAX; j++)
d[i][j] += d[i][j-1];
}
int fact(int val){
int p = 1;
for(int i=1; i<=val; i++)
p *= i;
return p;
}
int main()
{
precalcul();
int cnt = 0;
int r, D;
f >> r >> D;
if(D < 6){
for(int j=0; j<=r; j++){
if(d[D][r] - d[D][r-j] - d[D][j] > 0)
cnt ++;
//cout << r << ' ' << d[D][r] << ' ' << r-j << ' ' << d[D][r-j] << ' ' << j << ' ' << d[D][j] << endl;
}
g << cnt;
}else if(D == 6){
for(int j=0; j<=r; j++){
if(d[2][r] - d[2][r-j] - d[2][j] > 0 and d[3][r] - d[3][r-j] - d[3][j] > 0)
cnt ++;
}
g << cnt;
}
return 0;
}