Pagini recente » Cod sursa (job #3335630) | Cod sursa (job #3343268) | Cod sursa (job #3332947) | Cod sursa (job #3335028) | Cod sursa (job #3333578)
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
const int Nmax = 5000000 + 5;
int fac[6][Nmax], r;
int nr_fac(int x, int d )
{
int cnt = 0;
while ( x % d == 0 )
{
++cnt;
x /= d;
}
return cnt;
}
int main()
{
int i, d;
fin >> r >> d;
for ( i = 1; i <= r; ++i )
{
fac[2][i] = fac[2][i - 1] + nr_fac(i, 2);
fac[3][i] = fac[3][i - 1] + nr_fac(i, 3);
fac[5][i] = fac[5][i - 1] + nr_fac(i, 5);
}
int sol = 0;
for ( i = 0; i <= r; ++i )
{
if ( d == 2 || d == 3 || d == 5)
{
int nr_d = fac[d][r] - fac[d][r - i] - fac[d][i];
if ( nr_d )
++sol;
}
if ( d == 4 )
{
int nr_d = fac[2][r] - fac[2][r - i] - fac[2][i];
nr_d = nr_d / 2;
if ( nr_d )
++sol;
}
if (d == 6 )
{
int nr_3 = fac[3][r] - fac[3][r - i] - fac[3][i];
int nr_2 = fac[2][r] - fac[2][r - i] - fac[2][i];
int nr_d = min(nr_2, nr_3);
if ( nr_d )
++sol;
}
}
fout << sol << '\n';
return 0;
}