Pagini recente » Cod sursa (job #1496181) | Borderou de evaluare (job #1567129) | Cod sursa (job #2970872) | Cod sursa (job #2047527) | Cod sursa (job #2107860)
#include <cstdio>
using namespace std;
int calcExp(int n, int d)
{
int rez = 0;
while(n % d == 0)
rez++,
n /= d;
return rez;
}
int main()
{
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int r, d;
int f2 = 0, f3 = 0, f5 = 0;
scanf("%d%d", &r, &d);
while(d % 2 == 0) d /= 2, f2++;
while(d % 3 == 0) d /= 3, f3++;
while(d % 5 == 0) d /= 5, f5++;
int rez = 0, ok = 0;
int nr2 = 0, nr3 = 0, nr5 = 0;
for(int i = 1; i < (r + 1) / 2; i++)
{
nr2 += calcExp(r - i + 1, 2);
nr2 -= calcExp(i, 2);
nr3 += calcExp(r - i + 1, 3);
nr3 -= calcExp(i, 3);
nr5 += calcExp(r - i + 1, 5);
nr5 -= calcExp(i, 5);
rez += nr2 >= f2 && nr3 >= f3 && nr5 >= f5;
}
rez *= 2;
if(r % 2 == 0 && r != 0)
{
nr2 += calcExp(r / 2 + 1, 2);
nr2 -= calcExp(r / 2, 2);
nr3 += calcExp(r / 2 + 1, 3);
nr3 -= calcExp(r / 2, 3);
nr5 += calcExp(r / 2 + 1, 5);
nr5 -= calcExp(r / 2, 5);
rez += nr2 >= f2 && nr3 >= f3 && nr5 >= f5;
}
printf("%d", rez);
return 0;
}