Pagini recente » Cod sursa (job #3130332) | Cod sursa (job #2430539) | Cod sursa (job #955507) | Cod sursa (job #2768767) | Cod sursa (job #964427)
Cod sursa(job #964427)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
/*struct Arbore
{
int inf;
Arbore *st, *dr;
};
Arbore *Cauta(Arbore *r, int x)
{
if (!r)
return 0;
if (r->inf == x)
return r;
if (r->inf < x)
return Cauta(r->st, x);
return Cauta(r->dr, x);
}
void Inserare(Arbore *&r, int x)
{
Arbore *p = new Arbore, *q = r;
p->inf = x; p->st = p->dr = NULL;
if (!r)
{
r = p;
return ;
}
while (1)
{
if (q->inf == x)
{
delete p;
return ;
}
if (x < q->inf)
{
if (q->st)
q = q->st;
else
{
q->st = p;
return;
}
}
if (x > q->inf)
{
if (q->dr)
q = q->dr;
else
{
q->dr = p;
return;
}
}
}
}
void Stergere(Arbore *&r, int x)
{
Arbore *p = r, *t = NULL, *max, *tmax, *fiu;
while (p && p->inf != x)
{
t = p;
if (x < p->inf)
p = p->st;
else
p = p->dr;
}
if (!p) return ; // Nu se gaseste x in arbore
if (p->st && p->dr)
{
tmax = p;
max = p->st;
while (max->dr)
{
tmax = max;
max = max->dr;
}
p->inf = max->inf;
t = tmax;
p = max;
}
if (p->st)
fiu = p->st;
else
fiu = p->dr;
if (t)
if (t->st == p)
t->st = fiu;
else
t->dr = fiu;
else
r = fiu;
delete p;
}
Arbore *r;*/
int minim(int n, int *a, int b, int inf, int sup, int k)
{
int min = 1.e20;
for(int i=0; i<n; i++)
{
for (int j = inf; j<=sup; j++)
if (min > a[i]*j)
min = a[i] * j;
}
return min;
}
int maxim(int n, int *a, int b, int inf, int sup, int k)
{
int max = -1.e20;
for(int i=0; i<n; i++)
{
for (int j = inf; j<=sup; j++)
if (max < a[i]*j)
max = a[i] * j;
}
return max;
}
struct nod
{
int info;
nod *adrurm;
}*v, *sf;
void Adaugare(int nr, nod *&v, nod *&sf)
{
nod *d;
if (!v)
{
v = new nod;
v->info = nr;
v->adrurm = v;
sf = v;
}
else
{
d = new nod;
d ->info = nr;
sf->adrurm = d;
d->adrurm = v;
sf = d;
}
}
int n;
void elimin(nod *&v, int val, nod *&sf)
{
nod *aux;
if (v->info == val)
{
aux = v;
v = v->adrurm;
}
else
{
nod *c = v;
while (c->adrurm->info != val)
c = c->adrurm;
aux = c->adrurm;
c->adrurm = aux->adrurm;
if (aux == sf)
sf = c;
}
delete aux;
}
int sMin[100], c[100], j;
int p;
FILE *f;
FILE *g;
void caut(int li, int ls)
{
int m = (li + ls) / 2;
int nr = 0, i;
for (i=5; nr < p; i+=5)
{
int copie_i = i;
while(copie_i % 5 == 0)
{
copie_i /= 5;
nr++;
}
}
if(nr == p)
{
fprintf(g, "%d", i-5);
return;
}
else
if (li < ls)
{
if (p < nr)
caut(li, m);
else
caut(m, ls);
}
else
fprintf(g, "%d", -1);
}
int main()
{
int i;
f = fopen("fact.in", "r"); fscanf(f, "%d", &p);
fclose(f);
g = fopen("fact.out", "w");
caut(1, 100000000);
fclose(g);
return 0;
}