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

ACEASTA E REZOLVAREA LA PROBLEMA DE INFORMATICA DE PE PBINFO.RO NUMITA PUTERE2INTERVAL POSTATA DE Radutanasa86.

#include

using namespace std;

int n,a,b;

int main()

{ cin>>n>>a>>b;

for(int i=a;i<=b && n;i++)

if(!(i&(i-1)))

{ cout<
n--; }

}


NU INTELEG MODUL DE REZOLVARE . GEN CE INSEAMNA if(!(i&(i-1))) ? PENTRU CA PROBLEMA CEREA PUTERILE LUI 2 DIN INTERVAL .. VA ROG SA IMI EXPLICATI


checkmate1209: pls

Răspunsuri la întrebare

Răspuns de sprintdragos
2

Nu prea are sens chestiunea aia.

Cred ca stii ce face if-ul

In ce priveste parametrul !(i&(i-1))

! in fata expresiei inseamna negat, adica if-ul se executa atunci cand i&(i-1) este fals.

i&(i-1) este mereu fals

& reprezinta un operator pe biti, adica compara bitii variabilelor si returneaza 1 (adevarat) doar daca toti bitii sunt egali, adica practic daca numerele sunt egale, insa i & (i-1) nu este niciodata adevarat, asa cum probabil ti-ai dat seama.

Si cout << n-- pur si simplu decrementeaza n-ul introdus de la tastatura mai sus.

Pur si simplu nu are nici un sens rezolvarea asta


checkmate1209: ok imediat
checkmate1209: il pun pe comment
checkmate1209: fac postare
checkmate1209: ca nu pot sa dau rand in jos
sprintdragos: Pune-l aici si da-mi linkul : https://paste.ofcode.org/
checkmate1209: ah ok
checkmate1209: stai ca imi e greu
checkmate1209: ai gasit postarea mea tho?
checkmate1209: am repostat
checkmate1209: mersi ca ma ajuti btw, you are saving me !!!
Alte întrebări interesante