А) Не всегда возможно. Числа могут стать и отрицательными. Будем считать, что не только натуральными, а и целыми. #include "algorithm" #include "iostream" using namespace std; int main(){ int n,x,*a; cout<<"N X: "; cin>>n>>x; a=new int[n]; generate(a,a+n,[&]()mutable{return ++x-n;}); for(int i=0;i< n;i++)cout<<a<<; cout<< endl;} Б) Условие противоречиво. По одной его части элемент с индексом 0 должен быть равен 2^0=1, по другой части 2^1=2. Сделаем по тому, что в скобках. #include "algorithm" #include "iostream" using namespace std; int main(){ int n,x=1,*a; cout<<"N: "; cin>>n; a=new int[n]; generate(a,a+n,[&]()mutable{return x*=2;}); for(int i=0;i< n;i++)cout<<a<<; cout<< endl;}