17.04.2024

Задание 14. ЕГЭ по информатике. Значение арифметического выражения записали в системе счисления с основанием 3

Задача. Значение арифметического выражения: 911 * 320 – 39 – 27 записали в системе счисления с основанием 3. Сколько цифр 2 содержится в этой записи?

Воспользуемся алгоритмом обработки цифр натурального числа, ранее рассмотренном в данном блоге.

Пока число не равно 0, будем вычислять 3-ю цифру (d = n % 3) и уменьшать число в 3 раза (n = n // 3).

Если цифра числа равна 2, то будем увеличивать счетчик цифр k.

Программа решения задачи на языке Python

n = 9**11 * 3**20 - 3**9 - 27

k = 0

while n!=0:

    d = n % 3

    n = n // 3

    if d == 2:

        k+=1

print(k)

Ответ: 38


Задание 14. ЕГЭ по информатике. Операнды арифметического выражения записаны в системах счисления с основанием 17

 Задача. Операнды арифметического выражения записаны в системах счисления с основанием 17:

10x017 + F0xF017

В записи чисел переменной x обозначена неизвестная цифра из алфавита 17-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 13. Для найденного значения x вычислите частное от деления значения арифметического выражения на 13 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

Как будем решать задачу

  1. Запустим цикл по числу x в диапазоне цифр 17-ой системы счисления (от 0 до G)
  2. Выполним перевод чисел в 10-ю систему счисления функцией int()
  3. Вычислим значение арифметического выражения
  4. Выведем число  x  и частное от деления значения арифметического выражения на 13, если значение выражения кратно числу 13
Программа решения задачи на языке Python

for x in '0123456789ABCDEFG':

    a1 = int('10'+x+'0',17)

    a2 = int('F0'+x+'F0',17)

    s = a1 + a2

    if s % 13 == 0:

        print(x, s/13)

Результат запуска программы

Запуск программы

Наименьшее x = 2, а частное от деления значения выражения на число 13 равно 96815

Ответ: 96815

Ограничение данной программы состоит в использовании функции int(): максимальное основание, для которого допустим перевод числа, это 36, минимальное допустимое основание это 2.




16.04.2024

Задание 5. ЕГЭ по информатике. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R

Задача. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1.    Строится двоичная запись числа N.

2.    Далее эта запись обрабатывается по следующему правилу:

а) если число N чётно, то справа приписывается «01»;

б) если число N нечётно, то к этой записи слева приписывается 1 и справа приписывается «01».

Полученная таким образом запись является двоичной записью искомого числа R.

3.    Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное число R, большее 150, которое может быть получено в результате обработки натурального числа N.  В ответе запишите это число в десятичной системе счисления.

Приведем решение задачи на языках Паскаль и Python. В программе на языке Паскаль будем использовать функции модуля school для перевода чисел в двоичную/десятичную системы счисления (подобная задача ранее разбиралась в данном блоге).

Как будем решать задачу

  1. Запустим цикл по натуральному числу N от 1 до 100 (правая граница промежутка изменяемая, будем проводить эксперимент).
  2. Число N переведем в двоичную систему счисления.
  3. Обработаем двоичную запись числа в соответствие с алгоритмом.
  4. Полученную двоичную запись переведем в десятичную систему счисления R.
  5. Если R>150, выведем таблицу значений N и R на экран.

Далее проанализируем полученные результаты, нам необходимо найти наименьший результат, больший 150, для какого-либо N.

Программа решения задачи на языке Паскаль

uses school;

var n,r:integer; b:string;

begin

  for n:=1 to 100 do

  begin

    b:=bin(n);

    if n mod 2 = 0 then b:=b + '01'

    else b:='1'+b+'01';

    r:=dec(b, 2);

    if r>150 then println(n,r);

  end;

end.

Запустим программу для промежутка чисел N от 1 до 100. Обратим внимание, что по мере возрастания числа N, результаты R ведут себя произвольно, первое по счету R, очевидно, не является ответом. Необходимо выполнить эксперимент и запускать цикл по числу N до 200, 300, наблюдать, как ведут себя результаты (>150). Ответом является число 153.


Ответ: 153

В программу на языке Python внесем изменения: запустим цикл до 1000 и сохраним результаты, большие 150, в список, в качестве ответа возьмем минимум. Можно увеличивать правую границу и видеть, что минимум не меняется.

Программа решения задачи на языке Python

a = []

for n in range(1,1001):

    b = bin(n)[2:]

    if n % 2 == 0:

        b = b + '01'

    else:

        b = '1' + b + '01'

    r = int(b, 2)

    if r>150:

        a.append(r)

        #print(n, r)

print(min(a))

Ответ: 150