Pagini recente » Cod sursa (job #2775124) | Cod sursa (job #1738709) | Cod sursa (job #1081768) | Cod sursa (job #3123056) | Cod sursa (job #3250731)
#include <fstream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
const int nmax = 5000005;
int r, d, exp[nmax][5], divi[5], numi, prim[5] = {2, 3, 5};
int main()
{
f.tie(NULL);
f >> r >> d;
for(int i = 0; i < 3; i ++)
while(d % prim[i] == 0)
d /= prim[i], divi[i] ++;
for(int i = 1; i <= r; i ++)
{
if(i % 2 == 0)
exp[i][0] = exp[i / 2][0] + 1;
if(i % 3 == 0)
exp[i][1] = exp[i / 3][1] + 1;
if(i % 5 == 0)
exp[i][2] = exp[i / 5][2] + 1;
}
for(int i = 1; i <= r; i ++)
{
exp[i][0] += exp[i - 1][0];
exp[i][1] += exp[i - 1][1];
exp[i][2] += exp[i - 1][2];
}
for(int i = 1; i < r; i ++)
{
int pw2 = exp[r][0] - exp[i][0] - exp[r - i][0];
int pw3 = exp[r][0] - exp[i][0] - exp[r - i][0];
int pw5 = exp[r][0] - exp[i][0] - exp[r - i][0];
if(pw2 >= divi[2] && pw3 >= divi[3] && pw5 >= divi[5])
numi ++;
}
g << numi;
return 0;
}