fbpx

Problema #307 – Zerouri1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dau n numere naturale nenule. Calculaţi ultima cifră nenulă din scrierea zecimală a produsului celor n numere.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire

Programul afișează pe ecran numărul C, reprezentând valoarea calculată.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • cele n numere citite vor avea cel mult 9 cifre

Exemplu

Date de intrare

5
10 24 37 46 75

Date de ieșire

6

Explicație

Produsul celor 5 numere este 30636000, iar ultima cifră nenulă este 6.

#include <bits/stdc++.h>

using namespace std;
int main()
{
    unsigned long long n,c2=0,c5=0,p=1,a,x,pp,e;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;

             p=p%10;
             a=x;
             while(a%2==0)
             {
                 a=a/2;
                 c2++;
             }
             while(a%5==0)
             {
                 a=a/5;
                 c5++;
             }
              a=a%10;
              p=p*a;
    }

   if(c2==0 && c5==0) cout<<p%10;
   else
    if(c2==0) cout<<"5";
   else
   if(c2==c5) cout<<p%10;
   if(c2>c5)
   {
        if((c2-c5)%4==0) cout<<(p*6)%10;
   else
   if((c2-c5)%4==1) cout<<(p*2)%10;
   else
    if((c2-c5)%4==2) cout<<(p*4)%10;
   else
   if((c2-c5)%4==3) cout<<(p*8)%10;
   }
   else if(c5>c2)
   {
        if((c5-c2)%4==0) cout<<(p*6)%10;
   else
   if((c5-c2)%4==1) cout<<(p*2)%10;
   else
    if((c5-c2)%4==2) cout<<(p*4)%10;
   else
   if((c5-c2)%4==3) cout<<(p*8)%10;
   }

    return 0;
}
Comentarii

S-ar putea sa iti placa