Pagini recente » Cod sursa (job #294773) | Cod sursa (job #1445914) | Cod sursa (job #2331556) | Cod sursa (job #1489805) | Cod sursa (job #2108380)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int r, d, nr = 0, ant = 0, ant2, ant3;
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)
{
ant2 += expp(r - k + 1, 3) - expp(k, 3);
ant3 += expp(r - k + 1, 2) - expp(k, 2);
return min(ant2, ant3);
}
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 == 6)
{
nr += di > 0 ? 2 : 0;
}
else
{
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;
}