👤

Un copil știe doar adunarea cu 1 și înmulțirea cu 2. Ajută-l, pornind de la 1, să obțină numărul 100 printr-un număr minim de operații respective.

In C++ va rog!


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int numar=1;

   while(numar<3){

       numar+=1;

   }

   while(numar<24){

       numar*=2;

   }

   numar+=1;

   while(numar<100){

       numar*=2;

   }

   cout<<numar;

   return 0;

}

Explicație:

Raspunsul are 8 operatii.

Am incercat sa ajung la 50 * 2, adunad la inceput cu 2 apoi inmultind pana cand numarul ajunge la 24. Dupa, mai adaug 1 si incep sa inmultesc din nou.

Explicatie :

100 in baza 10 este 1100100 in baza 2.

El poate fi scris ca (((1*2)+1)*2*2*2+1)*2*2

In total 8 operatii (carein C++ pot fi rescrise ca 5 operatii folosind operatorii pe biti)

Cod C++ operatii minime :

#include <iostream>  

using namespace std;

int main() {

int n = 1;

n <<= 1;

n |= 1;

n <<= 3;

n |= 1;

n <<= 2;

cout << n;

}

Vezi imaginea Andrei750238