Pagini recente » Cod sursa (job #2474205) | Cod sursa (job #3261611) | Cod sursa (job #2118711) | Cod sursa (job #2346628) | Cod sursa (job #729989)
Cod sursa(job #729989)
#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);
long long n=0,i,n2=0,p2,adevarat=0,j,a;
long long 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;
p2=p+1;
i=12;
while(zero[i]>p)
i--;
for(j=1;j<=i;j++)
if((p+j)%zero[i+1]==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*/
i=12;
while(putere5[i]>n)
i--;
for(i=14;i>=1;i--)
if(p2>=zero[i])
{
n2+=p2/zero[i]*putere5[i];
p2=p2%zero[i];
}
if(n2==n)
g<<-1;
else
g<<n;
}
}