Sari la conținut

Problema #872 – Puteri3 – Rezolvari PBInfo

de Mihai-Alexandru 1 min citire

Cerința

Se citeşte un număr natural n. Să se scrie n ca sumă de puteri crescătoare ale lui 2.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa pe ecran un şir de numere naturale distincte, separate prin câte un spaţiu, astfel:

  • toate numerele sunt puteri ale lui 2
  • suma numerelor este n
  • numerele sunt în ordine crescătoare

Restricții și precizări

  • 1 ≤ n ≤ 2.000.000.000
  • vă recomandăm să realizaţi o soluţie recursivă

Exemplu

Intrare

10

Ieșire

2 8
#include <bits/stdc++.h>
using namespace std;

void rec(int n, int put){
    if(n == 0)
        return ;
    if(n % 2 == 0)
        rec(n / 2, put * 2);
    else
        cout << put << ' ', rec(n / 2, put * 2);
}

int main(){

    int n;
    cin >> n;
    rec(n, 1);

    return 0;
}