В какие из четырех клеток A, B, C или D можно поставить Робота, чтобы он выполнил алгоритм, записанный ниже, и сделал хотя бы один шаг? нц пока слева свободно влево кц
Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .
Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.
Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).
Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:
1 2
2 4
3 8
4 16
5 32
6 64
7 128 <-- это значение ещё не достаточное (меньше, чем 135)
8 256 <-- а вот это значение минимально необходимое (8 разрядов)
#include <iostream> int main(){ int arr[3][7]; /*for (int* i = *arr; (i - *arr) < 21; i++) *i = i-*arr;*/ const int VALUE = 11; // int max; int count = 0; for (int x = 0; x < 7; x++) { max = arr[0][x]; for (int y = 0; y < 3; y++) { if (max < arr[y][x]) max = arr[y][x]; } if (max < VALUE) { std::cout << "Наибольший элемент столбца " << x + 1 << " меньше заданной величины." << std::endl; count++; } } std::cout << count << " столбцов не соответсвуют условию." << std::endl; return 0; }
Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .
Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.
Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).
Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в
двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:
1 2
2 4
3 8
4 16
5 32
6 64
7 128 <-- это значение ещё не достаточное (меньше, чем 135)
8 256 <-- а вот это значение минимально необходимое (8 разрядов)
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536
int main(){
int arr[3][7]; /*for (int* i = *arr; (i - *arr) < 21; i++) *i = i-*arr;*/
const int VALUE = 11;
//
int max; int count = 0;
for (int x = 0; x < 7; x++) {
max = arr[0][x];
for (int y = 0; y < 3; y++) {
if (max < arr[y][x]) max = arr[y][x];
}
if (max < VALUE) {
std::cout << "Наибольший элемент столбца " << x + 1 << " меньше заданной величины." << std::endl;
count++;
}
}
std::cout << count << " столбцов не соответсвуют условию." << std::endl;
return 0;
}