Sa se scrie o functie care primeste ca paramentru un numar natural n si returneaza cea mai mare putere a lui 2 mai mica sau egala cu n. Folosind aceasta functie sa se decompuna un numar ca suma de puteri ale lui 2.
#include<iostream>
using namespace std;
int Putere( int n )
{
int x = 1;
while ( x <= n )
x = x * 2 ;
return x/2;
}
int main()
{
int n;
cin >> n;
while ( n != 0 )
{
cout << Putere(n) << ' ';
n = n - Putere(n);
}
system("pause");
return 0;
}