👤

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


Răspuns :

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