Rezolvare completă PbInfo #1636 Cifre15

Cerința

Alin este un elev pasionat de înmulțirea numerelor. Știe că produsul a două sau mai multe numere naturale poate avea ultima cifră 0.

Se dau n numere naturale nenule. Ajutați-l pe Alin să determine:
a. numărul de cifre 0 de la sfârşitul produsului celor n numere;
b. care este ultima cifră nenulă a acestui produs.

Date de intrare

De pe prima linie a fișierului cifre15.in se citește un număr natural n iar de pe următoarea linie din fișier se citesc n numere naturale nenule, separate prin câte un spaţiu.

Date de ieșire

Fișierul de ieșire cifre15.out conține o singură linie pe care vor fi scrise cele două valori determinate, separate printr-un singur spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • numerele de pe a doua linie a fișierului de intrare au cel mult 9 cifre.

Exemplu

cifre15.in

3 
50 12 18

cifre15.out

2 8 

Explicație

50∙12∙18=10800, la finalul produsului sunt 2 cifre 0, iar ultima cifră nenulă este 8

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Cifre15:

#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cifre15.in");
ofstream g("cifre15.out");
int main()
{
    int n,x, d2 = 0, d5 = 0, p=1;
    f >> n;
    for(int i=1;i<=n;++i)
    {
        f >> x;
        while(x%2==0)
        {
            d2++;
            x/=2;
        }

        while(x%5==0)
        {
            d5++;
            x/=5;
        }

        p = (p * (x%10)) %10;
    }
    g << min(d2,d5) << ' ';
    int k = 0 , f = 0;
    if(d2>d5)
    {
        k = d2 - d5;
        f = 2;
    }
    else
    {
        k = d5 - d2;
        f = 5;
    }

    while (k>0)
    {
        p  = (p*f)%10;
        k--;
    }
    g<<p;


    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1636 Cifre15

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1636 Cifre15 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!