Главная /
Основы программирования - обучения основам /
Рассмотрим следующий фрагмент программы, вычисляющей частное q и остаток r от деления целых чисел a, b: дано: целые числа a >= 0, b > 0 цел q, r, e, m; q := 0; r := a; e := 1; m := b цикл пока r >= b | если 2*m <= r | | то e := e*2; m := m*2;
Рассмотрим следующий фрагмент программы, вычисляющей
частное q
и остаток r
от деления
целых чисел a
, b
:
дано: целые числа a >= 0, b > 0
цел q, r, e, m;
q := 0; r := a; e := 1; m := b
цикл пока r >= b
| если 2*m <= r
| | то e := e*2; m := m*2;
| иначе если m > r
| | то e := e/2; m := m/2;
| иначе
| | утверждение: m <= r и r < 2*m
| | q := q + e; r := r - m;
| конец если
конец цикла
// q и r -- частное и остаток от деления a на b
Какое условие является инвариантом цикла?
вопрос
Правильный ответ:
Число
e
является степенью двойки, а также
выполняются равенства
a - q·b = r
и
m = e·b
.
Число
e
является степенью двойки, а также
выполняются равенства
a - q·m = r
и
m = e·b
.
Сложность вопроса
69
Сложность курса: Основы программирования - обучения основам
50
Оценить вопрос
Комментарии:
Аноним
Я провалил сессию, почему я не нашёл этот великолепный сайт с решениями с тестами intuit месяц назад
17 окт 2019
Аноним
Это очень простой вопрос интуит.
06 июл 2018
Другие ответы на вопросы из темы программирование интуит.
- # Рассмотрим следующую реализацию функции onMul, которая исполняет команду умножения в проекте «Стековый калькулятор»: static void onMul() { double y, x; assert(st_size() >= 2); // утв: глубина стека // не меньше двух y = st_pop(); x = st_pop(); st_push(x * y); display(); } Правильно ли здесь используется конструкция «утверждение», которая в Си реализуется функцией assert?
- # Содержимое двухбайтового слова можно интерпретировать либо как неотрицательное целое число в диапазоне 0...65535, либо как число со знаком в диапазоне -32768...32767. Какое число со знаком имеет тот же двоичный код, что и неотрицательное число 65533?
- # Что представляет собой двоичный код мантиссы вещественного числа 2.5 типа double?
- # Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма быстрого возведения в степень: дано: основание a и показатель степени n >= 0 надо: вычислить a в степени n вещ b, p; цел k; b := a; p := 1.0; k := n; цикл пока k > 0 | инвариант: bk p = an | если k четное | | то | | k := k / 2; | | b := b * b; | | иначе | | k := k - 1; | | p := p * b; | конец если конец цикла ответ := p;
- # Как располагаются разряды двоичного представления целого числа внутри машинного слова в архитектуре Big Endian (процессоры Motorola, Power PC и т.п.)?