Cod sursa(job #2645666)

Utilizator IRadu1529Radu Ionescu IRadu1529 Data 29 august 2020 13:18:16
Problema Factorial Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#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;
}