Ответ
Задание 1. Полосатая раскраска посмотреть ответ
Задание 2. Перчатки посмотреть ответ
Задание 3. Странная планета
Космонавт высадился на планете, очень похожей на Землю, чтобы провести важный эксперимент. Он знает, что дата начала эксперимента D1M1Y1 (день, месяц, год), а дата окончания D2M2Y2. Однако выяснилось, что календарь этой планеты отличается от земного в году N месяцев, i-й месяц года имеет длительность Li дней.
Помогите космонавту рассчитать, сколько дней продлится эксперимент на этой планете, учитывая, что в его продолжительность входят дни начала и окончания.
Формат входных данных
Первая строка содержит целое число D1 (1≤D1≤105) день начала эксперимента.
Вторая строка содержит целое число M1 (1≤M1≤105) месяц начала эксперимента.
Третья строка содержит целое число Y1 (1≤Y1≤105) год начала эксперимента.
Четвёртая строка содержит целое число D2 (1≤D2≤105) день окончания эксперимента.
Пятая строка содержит целое число M2 (1≤M2≤105) месяц окончания эксперимента.
Шестая строка содержит целое число Y2 (1≤Y2≤1051≤Y2≤105) год окончания эксперимента.
Седьмая строка содержит целое число N (1≤N≤1051≤N≤105) число месяцев в году на странной планете.
Следующие N строк содержат N целых чисел Li (1≤Li≤105) по одному числу в строке длительности месяцев на странной планете.
Гарантируется, что дата окончания эксперимента не раньше даты начала и что обе даты корректны.
Формат выходных данных
Выведите одно целое число продолжительность эксперимента, выраженную в днях.
Обратите внимание, что ответ может превышать возможное значение 32‑битной целочисленной переменной, поэтому необходимо использовать 64‑битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие при M1=M2, Y1=Y2, будут оцениваться в 15 баллов.
Решения, правильно работающие при Y1=Y2, будут оцениваться в 40 баллов.
Замечание
В первом примере дата начала эксперимента 40.4.2024 (день.месяц.год), дата окончания 45.4.2024. Легко видеть, что эксперимент начинается и заканчивается в одном месяце одного года и длится с 40 по 45 день включительно, то есть 6 дней.
Во втором примере дата начала эксперимента 40.4.2024, дата окончания 2.2.2025. Всего в году 7 месяцев. Продолжительность месяца с номером 4 равна 72 дням. В эксперимент войдут последние 33 дня четвёртого месяца 2024 года, полностью войдут пятый, шестой и седьмой месяцы 22024, первый месяц 2025 и два дня второго месяца 2025 года
Ввод
40
4
2024
45
4
2024
7
12
3
60
72
40
22
5
Вывод
6
Ввод
40
4
2024
2
2
2025
7
12
3
60
72
40
22
5
Вывод
114
Решение на питоне
d1 = [int(input()) for i in range(3)]d2 = [int(input()) for i in range(3)]d = [d1, d2]n = int(input())1 = [[i,int(input())] for i in range(n)]1 = sorted(1)psum = [1[0][1]] * nfor i in range(1, n): psum[i] = psum[i-1] + 1[i][1]psum = sorted(psum)psum = [0] + psumyear = sum([x for (i,x) in 1])× = 2 * [0]for i in range(2):x[i] = d[i][0] + psum[d[i][1] — 1] + (d[i][2] — 1) * yearprint(x[1] — x[0] + 1)
Задание 4. Бирмингем
В Бирмингеме все номера телефонов имеют длину L и состоят только из цифр от 0 до 9. Томас Шелби собрался позвонить своему брату Артуру, но понял, что не помнит его точный номер.
У Томаса прекрасная память на цифры, так что он совершенно точно помнит все цифры номера Артура. Но в их порядке он совсем не уверен. Томас попытался составить из цифр, которые он помнит, номер Артура и записал его на листке бумаги. Он полагает, что мог перепутать позиции некоторых цифр, но таких цифр, которые стоят в его записи не на своих местах, не более KK.
Телефонные справочники в Бирмингеме содержат не настоящие имена жителей, а псевдонимы, которые сообщили владельцы номеров. К огорчению Томаса, он не знает, какой псевдоним принадлежит его брату. Поэтому Томас принял решение просмотреть все N номеров и выбрать те из них, которые могут оказаться номером Артура.
Определите количество таких номеров.
Формат входных данных
В трёх строках вводятся три числа N, L, K (1≤N×L≤105, 2≤K≤L) количество номеров в справочнике Томаса, длина всех номеров и максимальное количество цифр, стоящих не на своих местах в том номере, который помнит Томас.
В четвёртой строке написан возможный номер Артура, записанный Томасом.
В следующих N строках идут телефонные номера из телефонного справочника.
Формат выходных данных
В первой строке выведите одно целое число количество номеров, которые могут оказаться номером Артура.
Система оценки
Решения, правильно работающие при L≤10, K≤5, будут оцениваться в 30 баллов.
Решения, правильно работающие при условии, что в номерах телефонов встречаются только цифры 1 и 2, будут оцениваться в 40 баллов.
Замечание
В первом примере Томас предполагает, что у Артура может быть номер 123. Следовательно, именно из этих цифр и состоит настоящий номер Артура.
Поскольку K=2, то не более 2 цифр стоят не на своих местах. Под такое описание подходит только первый номер из телефонного справочника 321. Для получения этого номера в номере 123 нужно поменять местами первую и третью цифры. Во втором номере из телефонного справочника есть цифра 4, которой в номере 123 нет, так что этот номер точно не подойдёт.
Во втором примере также подходит только первый номер из телефонного справочника. Чтобы получить его из номера 1234, нужно поменять местами вторую и четвёртую цифры.
Второй номер из телефонного справочника также содержит все цифры из предполагаемого номера Артура. Но чтобы его получить, потребуется поменять местами все четыре цифры, что противоречит условию K=2<4.
Ввод
2
3
2
123
321
124
Вывод
1
Ввод
2
4
2
1234
1432
2143
Вывод
1
Ответ
import sysimport threadingdef main():import sysdef read_line():return sys.stdin.readline().strip()N= int(read_line())L = int(read_line())K = int(read_line())S = read_line()count_S = [0]*10for c in S:count_S[int(c)] +=1ans = 0for _ in range(N):P = read_line()if len(P) != L:continue # Skip if the phone number length doesn’t matchcount_P = [0]*10for c in P:count_P[int(c)] +=1if count_P == count_S:differences = sum(1 for a, b in zip(S, P) if a != b)if differences <= K:ans += 1print (ans)threading.Thread(target=main). start()
Задание 5. Плитки
В магазине продаются плитки размером 1×1 упаковками по X штук. Какое минимальное количество упаковок надо купить, чтобы замостить плитками некоторый квадрат с целочисленными сторонами? Все плитки из купленных упаковок должны быть использованы.
Формат входных данных
В единственной строке вводится целое число X (1≤X≤1012).
Обратите внимание, что ответ может превышать возможное значение 32‑битной целочисленной переменной, поэтому необходимо использовать 64‑битные целочисленные типы данных (тип int6464 в языке Pascal, тип long long в C++, тип long в Java и C#).
Формат выходных данных
Выведите минимальное количество упаковок, которое надо купить. Можно доказать, что такое число всегда существует.
Система оценки
Решения, правильно работающие при X≤1000, будут оцениваться в 40 баллов.
Замечание
В примере в каждой упаковке по 12 плиток. Если мы купим одну упаковку, то не сможем замостить квадрат. Если купим 2 упаковки, то получится 24 плитки, которыми тоже нельзя замостить ни один квадрат. Если же купить 3 упаковки, то получится 36 плиток, ими можно замостить квадрат размера 6×6.
Ответ:
def min_boxes(X):prime_factors =n = Xfor i in range(2, int(math.sqrt(n)) + 1): while n % i == 0:if i in prime_factors:prime_factors[i] += 1else:prime_factors[i] = 1n //=if n > 1:prime_factors[n] = 1k = 1for p, exp in prime_factors.items():if exp % 2 != 0:k *= preturn kX = int(input().strip()) print(min_boxes(X))