Pagini recente » Cod sursa (job #372844) | Cod sursa (job #1502732) | Cod sursa (job #1633990) | Cod sursa (job #2279210) | Cod sursa (job #1965089)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int p;
vector<pair<int,int>> puteri;
int zero(int x)
{
int ret=0;
for(auto it=puteri.rbegin();it!=puteri.rend();++it)
{
int putere=it->first, zerouri=it->second;
if(p>=zerouri)
ret+=(p/zerouri)*putere, p%=zerouri;
}
return ret;
}
int zero2(int x)
{
int ret=0;
for(auto it=puteri.rbegin();it!=puteri.rend();++it)
{
int putere=it->first, zerouri=it->second;
while(x>=putere)
x-=putere, ret+=zerouri;
}
return ret;
}
int main()
{
fin>>p;
int aux=p;
if(p==0)
{
fout<<1;
return 0;
}
int x=1, z=0;
for(int i=0;i<13;++i)
{
z+=x, x*=5;
puteri.push_back(make_pair(x, z));
}
int ans=zero(p);
if(zero2(ans)!=aux)
fout<<-1;
else
fout<<ans;
return 0;
}