М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
SevenDays7
SevenDays7
25.04.2022 13:09 •  Информатика

Укажите наибольшее четырёхзначное восьмеричное число, двоичная запись которого содержит ровно 4 нуля. в ответе запишите только само восьмеричное число, основание системы счисления указывать не нужно.

👇
Ответ:
geragyy
geragyy
25.04.2022
Наибольшее четырехзначное восьмеричное число - это 7777₈.
В двоичном коде каждая триада представляется тремя битами и такое число запишется как 111 111 111 111₂ (разделение на триады пробелом сделано для наглядности).
Чтобы число было наибольшим четырехзначным и содержало четыре нуля, эти четыре нуля должны быть в конце.
Число будет иметь вид 111 111 110 000₂ = 7760₈

ответ: 7760
4,6(14 оценок)
Ответ:
Dashaegor540
Dashaegor540
25.04.2022
7760 (8)=111 111 110 000 (2)
4,7(17 оценок)
Открыть все ответы
Ответ:
ninalolka
ninalolka
25.04.2022

Привожу 2 варианта решения.

Вариант 1: файл 1.cpp

Решение основано на обыкновенном вычислении периода дроби (для дробей, имеющих конечную десятичную запись(например, 1/2=0,5), период вычисляется для формы с нулем в периоде(то есть для 1/2 берется форма 0,5(0))) с деления столбиком.

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

Вариант 2: файл 3.cpp

Если немного углубиться в математику, можно найти теорему, по которой дробь, представленная в виде m/n , где НОД(m, n) = 1, имеет конечную десятичную запись тогда и только тогда, когда ее знаменатель n = 5^{a_1}*2^{a_2}; a_1, a_2\in Z, a_1, a_2\geq0. Тогда достаточно сократить числитель и знаменатель на общие множители, а далее выполнить проверку знаменателя.

4,6(44 оценок)
Ответ:
wolfwithyou
wolfwithyou
25.04.2022

При x = 68;

Как проверял:

var

 x, a, b, i: integer;

begin

 for i := 1 to 1000 do

 begin

   x := i;

   a := 0;  

   b := 0;

   while x > 0 do

   begin

     a := a + 1;

     if b < (x mod 8)

       then b := x mod 8;

     x := x div 8;

   end;

   if (a = 3) and (b = 4) Then

   begin

     writeln(i);

     break;

   end;

 end;  

end.

Взял 1000 потому что думал, что должно быть меньше. Если бы программа не сработала взял бы либо отрицательные числа, либо больше тысячи (возможно бы пришлось изменить тип данных).

4,6(36 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ