Десятичное преобразование
Ссылка на задачу: https://inf-ege.sdamgia.ru/problem?id=11262
Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.
1. Складываются отдельно первая и вторая цифры, вторая и третья цифры, а также третья и четвёртая цифры.
2. Из полученных трёх чисел выбираются два наибольших и записываются друг за другом в порядке неубывания без разделителей.
Пример. Исходное число: 9575. Суммы: 9 + 5 = 14; 5 + 7 = 12; 7 + 5 = 12. Наибольшие суммы: 14, 12. Результат: 1214.
Укажите наименьшее число, при обработке которого автомат выдаёт результат 1517.
for i in range(1000,10000): s = str(i) s1 = int(s[0]) + int(s[1]) s2 = int(s[1]) + int(s[2]) s3 = int(s[2]) + int(s[3]) a = [s1,s2,s3] sorted(a) s_new = str(a[1]) + str(a[2]) if s_new == '1517': print(i)
Ответ 1698
Двоичное преобразование
Ссылка на задачу: https://inf-ege.sdamgia.ru/problem?id=18708
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее, чем 85. В ответе запишите это число в десятичной системе счисления.
for i in range(1,100): a = bin(i)[2:] s = str(a) k = 0 for s1 in s: k = k + int(s1) s1 = str(k%2) s = s + s1 k = 0 for s1 in s: k = k + int(s1) s1 = str(k%2) s = s + s1 r = int(s,2) if r > 85: print(i)
Ответ
21