Informatică, întrebare adresată de pmarian98, 8 ani în urmă

#307 Zerouri1

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.
//asta e sursa mea de 20%
#include

using namespace std;
int nz(int P)
{
int p=0;
while(P){
if(P%10==0)
p++;
else
break;
P/=10;
}
return P%10;
}
int main()
{
int n,x;
long long P=1;
int p;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
P*=x;
}
cout< }


boiustef: zerourile la produs apar nu numai daca numarul se termina cu zero dar si de la inmutirea lui 2 cu 5...

Răspunsuri la întrebare

Răspuns de boiustef
4

#include <iostream>

using namespace std;

long long int n, i, j, num, m, exp2, exp5, ultima=1, cif;

int main()

{

   cin >> n;

   for (j=1; j<=n; ++j)

   {

       cin >> num;

       while (num%2==0) { ++exp2; num/=2;}

       while (num%5==0) { ++exp5; num/=5;}

       cif=num%10;

       ultima=(ultima*cif)%10;

   }

   

   if (exp2>exp5)

   {

       exp2=exp2-exp5;

       m=exp2%4;

       if (m==1) ultima=(ultima*2)%10;

       if (m==2) ultima=(ultima*4)%10;

       if (m==3) ultima=(ultima*8)%10;

       if (m==0) ultima=(ultima*6)%10;

   }

   else

   {

       if (exp2==exp5) ultima=ultima;

       else ultima=5;

   }

   cout << ultima;

}



boiustef: numai 5?? :))) problema costa mai mult :))) m-am muncit 2 zile... (glumesc de punctaj)
boiustef: e testata, de 100 pnct, o zi bn si frum
boiustef: daca ceva nu e clar... dai intrebari
boiustef: se pare ca nu ai observat ca a aparut raspunsul la asa o problema eleganta... :)))
larea99: Cum te ai gandit la aceasta rezolvare inca nu imi vine
boiustef: putina logica si matematica... pt a gasi prima cifra semnificativa tr de evitat zerourile care apar de la produsele 2 cu 5, samd
larea99: interesant
Alte întrebări interesante