Відповідь:
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
void randarr(int *A,int N){
for(int i = 0; i < N; i++){
A[i] = rand() % 10 + 1;
}
}
void printarr(int *A,int N){
for(int i = 0; i < N; i++){
cout << A[i] <<"\t";
}
}
void expression(int *A, int N,int k){
for(int i = 0; i < N; i++){
A[i] = A[i] + A[k];
}
}
int main(){
srand(time(NULL));
setlocale(LC_ALL , "Ukrainian");
int N,k;
cout << "Введiть кiлькiсть елементiв массиву N: ";
cin >> N;
cout << "Введiть число k( 1 < k < N): ";
cin >> k;
if(k < 1 || k > N){
cout << "Число введено невiрно..." << endl;
}
int *A = new int[N];
randarr(A,N);
printarr(A,N);
expression(A,N,k);
cout << endl;
printarr(A,N);
delete[] A;
return 0;
}
Сначала переводим 8-чное число 5237 в двоичное = 5237(8) = 101010011111(2). Дальше справа налево проставляем в даоичном числе числа, начиная с нуля:
101010011111
11 10 9 8 7 6 5 4 3 2 1 0 (на фото лучше было бы видно, сорри). И если на каком-то месте стоит 1, то возводим 2 в соотвествующую степень. Получаем 2^11 + 2^9 + 2^7 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 2719(10)