Pagini recente » Cod sursa (job #548639) | Cod sursa (job #7883) | Cod sursa (job #1537513) | Cod sursa (job #2689933) | Cod sursa (job #706927)
Cod sursa(job #706927)
#include<iostream>
#include<fstream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(void)
{
fstream f,g;
f.open("fact.in",ios::in);
g.open("fact.out",ios::out);
int n=0,i,n2,adevarat=0,j;
int putere5[20]={0},zero[20]={0};
putere5[1]=5;
for(i=2;i<=19;i++)
putere5[i]=putere5[i-1]*5;
zero[1]=1;
for(i=2;i<=19;i++)
zero[i]=putere5[i-1]+zero[i-1];
long long p=1;
f>>p;
n2=p;
i=12;
while(p<zero[i])
i--;
for(j=1;j<=i-1;j++)
if((p+j)%zero[i]==0)
{
g<<-1;
return 0;
}
if(p==0)
g<<1;
else
{
for(i=19;i>=1;i--)
if(p>=zero[i])
{
n+=p/zero[i]*putere5[i];
p=p%zero[i];
}
/* for(i=1;i<=15;i++)
if(n==putere5[i])
{
adevarat=1;
break;
}
if(adevarat)
if(zero[i]==n2)
g<<n;
else
g<<-1;
else*/
/*if(n%25==0)
for(i=15;i>=2;i--)
if(n%putere5[i]==0)
{
a=n/putere5[i];
if(n2%a==0&&n2/a==zero[i])
g<<n;
else
g<<-1;
break;
}
else;
else*/
g<<n;
}
}