Pagini recente » Cod sursa (job #180978) | Cod sursa (job #2087173) | Cod sursa (job #924778) | Cod sursa (job #211683) | Cod sursa (job #2429500)
#include <fstream>
using namespace std;
ifstream f ("fact.in");
ofstream g ("fact.out");
int largestPower (int n, int &powCnt, int &pow)
{
powCnt = 0;
pow = 5;
while (pow <= n)
pow *= 5, powCnt++;
return powCnt;
} /// powCnt = cel mai mare exponent al lui 5
/// pow = cea mai mare putere a lui 5 mai mici decat n
int cntZeros (int n)
{
int pow = 5;
int cntZero = 0;
while (pow <= n)
{
cntZero += (n/pow);
pow *= 5;
}
return cntZero;
}
int rezPreliminar (int n)
{
int powCnt, pow;
largestPower (n, powCnt, pow);
int x = ( 4 * n ) / (1-1/pow); //formula dem. in formule.txt
return x;
}
int main ()
{
int n, rez;
f>>n;
if (n==0) g<<1;
else
{
rez = rezPreliminar(n);
rez = rez + 5 - rez%5; ///cel mai mic multiplu de 5 mai mare decat rez
int cnt = cntZeros(rez);
if (cnt == n)
g<<rez;
else if (cnt < n)
{
while (cnt < n)
{
rez+=5;
cnt = cntZeros(rez);
}
if (cnt == n) g<<rez;
else g<<-1;
}
else
{
while (cnt > n)
{
rez-=5;
cnt = cntZeros(rez);
}
if (cnt == n) g<<rez;
else g<<-1;
}
}
g<<'\n';
g<<cntZeros(rez);
return 0;
}