283
Cerința
Se citesc 3 numere naturale n
, a
și b
. Afișați primele n
puteri ale lui 2
, în ordine crescătoare, din intervalul [a,b]
. Dacă nu există cel puțin n
puteri ale lui 2
în interval, atunci se vor afișa cele care există.
Date de intrare
Programul citește de la tastatură numărul n
, a
și b
, separate prin spații.
Date de ieșire
Programul va afișa pe ecran puterile lui 2
din intervalul [a,b]
.
Restricții și precizări
1 ≤ n ≤ 60
1 ≤ a ≤ b < 2^64
Exemplu
Intrare
2 6 35
Ieșire
8 16
Explicație
În interval există 3
puteri ale lui 2
, dar s-au afișat doar n
dintre ele.
#include <bits/stdc++.h> using namespace std; long long int log(long long int n) { int cnt =0; while(n>1) n/=2 , cnt++; return cnt; } long long int put(int i) { long long int put=1; while(i) put*=2 , i--; return put; } int main() { long long int n , a , b; cin >> n >> a >> b; int put1=log(a); if(pow(2 , put1)!=a) put1++; int put2=log(b); for(int i = put1 ; i <= put2 && n ; ++i , n--) cout << put(i) << ' '; return 0; }
Comentarii