Pagini recente » Cod sursa (job #1637312) | Cod sursa (job #3242821) | Cod sursa (job #1269325) | Cod sursa (job #498813) | Cod sursa (job #2488527)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int r, d, nr, aaa;
int doi, trei;
int exp(int n, int p)
{
int e = 0;
while(n % p == 0)
{
e ++;
n /= p;
}
return e;
}
int oare(int k)
{
switch(d)
{
case 4:
{
return aaa - exp(k, 2) + exp(r - k + 1, 2);
break;
}
case 6:
{
trei = trei - exp(k, 2) + exp(r - k + 1, 2);
doi = doi - exp(k, 3) + exp(r - k + 1, 3) ;
return min(doi, trei);
break;
}
}
return aaa + exp(r - k + 1, d) - exp(k, d);
}
void solve()
{
int r2 = (r - 1) / 2, D;
for(int k = 1; k <= r2; k++)
{
D = oare(k);
if(d == 6)
{
nr += D > 0 ? 2 : 0;
}
else
{
if(d == 4) nr += D > 1 ? 2 : 0;
else nr += D > 0 ? 2 : 0;
aaa = D;
}
}
if(r != 0 && r % 2 == 0)
{
D = oare(r / 2);
if(d == 4) nr += D > 1 ? 1 : 0;
else nr += D > 0 ? 1 : 0;
}
}
void citire()
{
f >> r >> d;
}
void afisare()
{
g << nr;
}
int main()
{
citire();
solve();
afisare();
return 0;
}