Pagini recente » Cod sursa (job #1800959) | Cod sursa (job #1222282) | Cod sursa (job #3192838) | Cod sursa (job #2907450) | Cod sursa (job #2645666)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int nrcifzero(long long int n, long long int& ucEL)
{
int nr = 0;
while (n && n % 10 == 0)
{
nr++;
n /= 10;
}
ucEL = n % 10;
return nr;
}
int main()
{
long long int el, n, rezultat;
long long int uc, ucEl, limita, nr0;
fin >> n;
if (n == 0)
{
fout << 1;
return 0;
}
if (n == 1)
{
fout << 5;
return 0;
}
if (n == 2)
{
fout << 10;
return 0;
}
limita = 2;///am deja raspunsul pana la 2 de 0 la final
uc = 8;///ultima cifra(de la stanga la dreapta) care nu e 0 pentru 10!
el = 11;///urmatorul dupa 10
while (limita != n)
{
ucEl = el % 10;
rezultat = ucEl * uc;
long long int copieUc = uc;
int conditie = 0;
if (uc && ucEl)///daca uCifre inmultite dau 0 dar nu sunt 0 nici una(2 * 5) atunci adaug 1 la limita
conditie = 1;
uc = rezultat % 10;
if (uc == 0)
{
rezultat = el * copieUc;
int nrZero = nrcifzero(rezultat, uc);///aflu nr de cifre de 0 pt el
nrZero = nrcifzero(el, ucEl);// salvez ult cifra != 0
limita = limita + nrZero + 1;
if (conditie == 0)
limita--;
}
el++;
}
fout << el - 1;
return 0;
}