Buna, cum pot numara zerourile consecutive dintr un numar?
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
long long num, zerocons, prima, prec, cif;
int main()
{
cin >> num;
prec=num %10; num/=10;
while (num)
{
cif=num%10;
if (cif==0)
{
if (prec==0)
{
if (prima==0) {zerocons+=2; prima=1;}
else ++zerocons;
}
}
else prima=0;
prec=cif;
num/=10;
}
cout << zerocons;
}
Explicație:
Variabile folosite:
"zerocons", e clar, isi canta numele... :))
"cif", e cifra curenta cercetata
"prec", memorizeaza cifra precedenta
"prima", iata cu asta e mai complicat... ea semnalizeaza o prima aparitie a doua zerouri consecutive, nu neaparat sa fie prima in numar..
De exemplu avem numarul 3000200005
Numarul se parcurge de la dreapta la stanga.
prec ia valoarea 5, cif e 0, nu se memorizeaza perechea consecutiva,prec ia valoarea 0, se trece la urm 0, adica cif=0
faca si prec=0 si e prima pereche consecutiva, atunci zerocons creste cu 2, si prima=1, altfel zerocons creste cu 1.
Daca se intalneste o cifra diferita de zero, atunci prima=0, pentru a depista in continuare iara 2 zerouri consecutive...
:))) nu sunt sigur daca am fost explicit... nai meditezi asupra codului, si poti da si intrebari... Succese la cercetare.
prec=cif;
num/=10;
while (numar % 2 ==0)
{ ++d; numar /= 2; }
2. numeri cati de 5 sunt de la impartirea numarului la 5
while (numar % 5 ==0)
{ ++c; numar /= 5; }
zerouri=min(d,c);