Условие Для регистрации на сайте некоторой страны пользователю требуется придумать пароль. Длина пароля – ровно 11 символов. В качестве символов используются десятичные цифры и 12 различных букв местного алфавита, причём все буквы используются в двух начертаниях: как строчные, так и заглавные (регистр буквы имеет значение!).
Под хранение каждого такого пароля на компьютере отводится минимально возможное и одинаковое целое количество байтов, при этом используется посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов.
Определите объём памяти, который занимает хранение 60 паролей.
Решение Количество различных допустимых символов N = 10+12+12 = 34 (10 цифр, 12 строчных букв и 12 заглавных букв). Наименьшая степень двойки, которая больше или равна N, - это 2 6
Для хранения 11 символов пароля требуется 11×6 = 66 бит. Далее, 66бит = 8байт + 2бит. Поэтому наименьшее целое количество байт, достаточное для хранения одного пароля – 9.
Для хранения 60 паролей нужно 60×9 = 540 байт.
ответ: 540.
Два соображения:
Произведение делится на 7, но не делится на 49, если один из сомножителей делится на 7 (но не на 49), а второй - не делится на 7.Произведение будет больше, если каждый из сомножителей будет большеПолучаем такую идею: будем хранить максимальное из всех чисел, делящихся на 7, но не делящихся на 49, и максимальное из чисел, не делящихся на 7. Их произведение будет ответом.
Реализация (Python 3.8.1)
max_div_7 = 0
max_not_div_7 = 0
while (x := int(input())) != 0:
if x % 7 != 0:
max_not_div_7 = max(max_not_div_7, x)
elif x % 7 == 0 and x % 49 != 0:
max_div_7 = max(max_div_7, x)
if max_div_7 == 0 or max_not_div_7 == 0:
print(1)
else:
print(max_div_7 * max_not_div_7)
//Версия 3.3.5, сборка 1650
begin
var f: integer->real:=x->range(1,x).Aggregate(Real(1),(a,b)->a*b);
var n:=ReadInteger('n=');
write(range(1,n).Select(x->f(x)).Sum)
end.