Realizați un algoritm C++ care determină dacă un număr natural n este un număr putere a lui 2.
Exemple:
Date de intrare - - - - - - Date de ieșire
n=1024 - - - - —--------------- Da
n=8 - - - - - - - - - - - - - - - - - Da
n=31 - - - - - - - - - - - - - - - - -Nu
Anexe:
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, a, b;
cin>>n;
if (ceil(log2(n))==(float)log2(n)) cout<<"Da"; else cout<<"Nu";
return 0;
}
Explicație:
Teoria: introucem un numar. Daca log in baza 2 din n, rotunjit (ceil) va fi egal cu log in baza 2 din n, atunci se afiseaza da, daca nu se afiseaza nu.
Ex: (1)
n=8;
log2(8)=3; ceil(log2(8))=3, se afiseaza da
Ex: (2)
n=9;
log2 (9)= 3.169......; ceil (log2(9))=4 ceil- rotunjirea la cel mai mare numar intreg;
Pentru folosirea logaritmelor si a rotunjirii este nevoie de biblioteca <cmath> sau <math.h>
Daca ceva neclar ma intrebi
gugleadennis88:
Sunt si alte metode, exemplu sa imparti numarul n mereu la 2, si daca la sfarsit va ajunge la 1, atunci e da, daca nu atunci e nu
using namespace std;
int main()
{
int s, i=1;
cin>>s;
while (i>0){
if (s==1){cout<<"Da"; break;} else
if (s%2==0) s=s/2; else {cout<<"NU"; break;}
}
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă