Pagini recente » Diferente pentru utilizator/robertkarol intre reviziile 7 si 48 | Diferente pentru utilizator/loo_k01 intre reviziile 11 si 65 | Diferente pentru okr/20091 intre reviziile 29 si 22 | Profil anda | Cod sursa (job #1036759)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int main()
{
long long p, p5[24], nr0[24], nr = 0, i;
fin >> p;
if ( p == 0 )
{
fout << "1\n";
fin.close();
fout.close();
return 0;
}
else
if ( p == 5 )
{
fout << "-1\n";
fin.close();
fout.close();
return 0;
}
p5[0] = 5;
for ( i = 1; i <= 23; i++ )
p5[i] = p5[i - 1] * 5;
nr0[0] = 1;
for ( i = 1; i <= 23; i++ )
nr0[i] = p5[i - 1] + nr0[i - 1];
i = 23;
while ( p != 0 )
{
if ( p >= nr0[i] )
{
nr += p5[i] * ( p / nr0[i] );
p %= nr0[i];
if ( i == 0 ) p = 0;
}
i--;
}
fout << nr << '\n';
fin.close();
fout.close();
return 0;
}