Pagini recente » Cod sursa (job #1793683) | Cod sursa (job #1561352) | Cod sursa (job #1661504) | Cod sursa (job #72150) | Cod sursa (job #2108371)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int r, d, nr = 0, ant = 0;
int expp(int n, int p)
{
int e = 0;
while(n % p == 0)
{
e ++;
n /= p;
}
return e;
}
int divid(int k)
{
if(d == 6)
{
int minm = min(expp(r - k + 1, 3) - expp(k, 3), expp(r - k + 1, 2) - expp(k, 2));
return ant + minm;
}
if(d == 4) return ant + expp(r - k + 1, 2) - expp(k, 2);
return ant + expp(r - k + 1, d) - expp(k, d);
}
int main()
{
f >> r >> d;
int r2 = (r - 1) / 2, di;
for(int k = 1; k <= r2; k++)
{
di = divid(k);
if(d == 4) nr += di > 1 ? 2 : 0;
else nr += di > 0 ? 2 : 0;
ant = di;
}
if(r != 0 && r % 2 == 0)
{
di = divid(r / 2);
if(d == 4) nr += di > 1 ? 1 : 0;
else nr += di > 0 ? 1 : 0;
}
g << nr;
return 0;
}