В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
dftrek
dftrek
03.06.2022 11:43 •  Информатика

В какие из четырех клеток A, B, C или D можно поставить Робота, чтобы он выполнил алгоритм, записанный ниже, и сделал хотя бы один шаг?
нц пока слева свободно
влево
кц


В какие из четырех клеток A, B, C или D можно поставить Робота, чтобы он выполнил алгоритм, записанн

Показать ответ
Ответ:
pro100Abyroi
pro100Abyroi
30.01.2023 22:49

Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .

Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.

Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).

$ i = \lceil \log_2 N \rceil = \lceil \lg N / \lg 2 \rceil = \lceil \ln N / \ln 2 \rceil = \lceil \ln 135 / \ln 2 \rceil = \lceil 7{,}0768... \rceil = 8

Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в  i  двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:

i   $N=2^i

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

0,0(0 оценок)
Ответ:
valetto
valetto
08.11.2022 16:57
#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;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота