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

Значение арифметического выражения записали в системе счисления с основанием 3. Сколько цифр "2" содержится в этой записи?​


Значение арифметического выражения записали в системе счисления с основанием 3. Сколько цифр 2 сод

Показать ответ
Ответ:

содержится 190 цифр "2"

Объяснение:

Считал в программе на Паскале (скрин окна вывода смотри на приложенной внизу картинке):

// проверено в PascalABC.NET 3.4.2, сборка 1837 от 12.10.2018

var

a, t, x, x1, x2: BigInteger; // степени и основания степеней

y, o, n, y1, y2, c: Integer; // показатели степеней, основание СС, счётчик, константа

s, f: string; // строки- для результата и для поиска

begin

x := 3; // основание степени 1

y := 2020; // показатель степени 1

x1 := 3; // основание степени 2

y1 := 1010; // показатель степени 2

x2 := 9; // основание степени 3

y2 := 600; // показатель степени 3

c := 54; // константа

o := 3; // основание новой системы счисления (можно от 2 до 10)

f := '2'; // искомый символ, их количество считаем в числе в новой СС

s := ''; // пустая строка (тут будет число в новой СС, в формате строки)

n := 0; // счётчик искомых символов

writeln('считаем: ', x, ' в степени ', y, ' минус 2 * ', x1, ' в степени ', y1, ' плюс ', x2, ' в степени ', y2, ' плюс ', c);

a := x ** y - 2 * x1 ** y1 + x2 ** y2 + c;

writeln('в десятичной СС: ', a, ' (число разрядов= ', a.ToString.Length, ')');

t := a;

repeat

s := (t mod o).ToString + s;

if s[1] = f then n += 1;

t := t div o;

until t = 0;

writeln('в СС с основанием ', o, ': ', s, ' (число разрядов= ', s.ToString.Length, ')');

writeln('(число разрядов, содержащих "', f, '" = ', n, ' шт.)');

end.

Ну а так то по идее это задание считается на бумажке, используя знания о системах счисления:

Каждое из этих слагаемых приводится к виду a * 3^b. Получим:

1 * 3^2020

-2 * 3^1010

1 * 3^1200

2 * 3^3

В троичной системе эти числа будут выглядеть как  a000000... (число нулей равно b). То есть, в нашем случае, так:

10000...(всего 2020 нулей)

-20000...(всего 1010 нулей)

1000...(всего 1200 нулей)

2000  (тут всего 3 нуля)

Далее- складываем все положительные слагаемые (их три), по порядку от большего к меньшему. Получим сумму вида  a1 00...00 a2 00...00 a3 000, с большим числом нулей между тремя ненулевыми разрядами (не нужно полностью записывать эти нули, достаточно записать сокращённо, как я записал выше). В нашем случае получим:

100...00100...002000 (троичное число)

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

 100...00100..00000...002000 (троичное число)

-                           200...000000 (троичное число)

 -----------------------------------------------------------------------

 100...00022..22100...002000 (троичное число)

Жирным шрифтом я выделил разряды, соответствующие 1200-ой и 1010-ой степени тройки. В первом из них была единица, из которой заняли единицу, и она превратилась в ноль. Во втором из них был ноль, из которого вычли два, и (после того как заняли единицу в старшем разряде) получили один (в троичном виде это выглядит как 10-2=1, а в десятичном виде выглядит как 3-2=1).

Посчитаем, сколько разрядов было между этими двумя разрядами:

1200 - 1010 - 1 = 189 (разрядов)

Во всех этих 189 разрядах был ноль, а после вычитания во всех них появились двойки.

И ещё одна двойка была у нас в конце суммы, она никуда не делась и при вычитании.

Поэтому общее число двоек в троичной записи значения этого выражения будет равно:

189 + 1 = 190 (двоек)


Значение арифметического выражения записали в системе счисления с основанием 3. Сколько цифр 2 сод
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота