Pagini recente » Borderou de evaluare (job #2184054) | Borderou de evaluare (job #2555668) | Borderou de evaluare (job #1730238) | Borderou de evaluare (job #2256218) | Cod sursa (job #480260)
Cod sursa(job #480260)
#include <iostream>
using namespace::std;
int write(int nr)
{
FILE *fout;
fout = fopen("fact.out","w");
fprintf(fout,"%d",nr);
fclose(fout);
return 0;
}
int calc(int p)
{
int rez = p*5; //aici da 50
//rez2 = rez;
//nr = p;
int i=25;
//count = 0;
//z=1;
while(rez>=i) //p>=25 si nui mai mare ca 123
{
//nr += z;
//rez -= 5;
//z++;
// nr += (rez/i);
rez -= (rez-(rez/i)*5)/i*5;
//printf("rez2: %d", (rez/i));
i=i*5;
//count++;
//rez+=5;
}
return rez;
}
int main()
{
// float l = log10(125.0)/log10(5.0);
// printf("%f", floor(l));
// return 0;
FILE *fin;
//bool good=true;
int p=0, rez;
// float log5=log10(5.0), x ;
//long long int n;
fin = fopen("fact.in", "r");
fscanf(fin,"%d", &p);
fclose(fin);
if(p==0)
{
write(1);
return 0;
}
//ex p = 10 => rez trebuie sa fie 45
/*
printf("count: %d\n",count);
for(i=rez;i>rez-count*5;i-=5)
{
z=i;
while(z%5==0 && z!=1) z/=5;
if(z==1) {good = false; break;}
//if putere a lui 5
}
if(!good) printf("bad");
*/
//while(nr>p)
//{
// //x = log10((float)rez)/log5;
// //nr -= floor(x);
// z=rez;
// while(z%5==0)
// {
// nr--;
// z/=5;
// }
// rez-=5;
//}
if((rez = calc(p)) == calc(p+1)) write(-1);
else write(rez);
//else printf(" rez: %d\n",rez);
/*if(nr==p) write(rez); else write(-1);*/
//printf("z: %d",z);
//if(i>1)
//{
// i/=5;
// if (p==i*5) good = false;
//}
//if(good) write(rez); else write(-1);
//acum avem nr=11 il scadem pina la p
//i=p;
//while(nr>p)
//{
// z=i;
// nr--;
// rez -= 5;//??
//
// while(z%5 ==0)
// {
// nr--;
// z/=5;
// }
// i--;
//}
//printf("nr: %d, p: %d, rez: %d", nr, p, rez);
// if(nr==p) write(rez);
// if(nr!=p) write(-1);
//while(total<p)
//{
// count=1;
// nr=i;
// while(nr%5 == 0)
// {
// count++;
// nr /= 5;
// };
// total += count;
// i++;
//}
// if(total==p) write(5*(i-1));
// if(total>p) write(-1);
return 0;
}