350
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 ≤ 601 ≤ 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