From be2bc566c6175bd5d90f8be2baac5fe17046f9dd Mon Sep 17 00:00:00 2001 From: gogacoder Date: Sun, 28 May 2023 14:16:38 +0700 Subject: [PATCH] second file solution was finished --- README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/README.md b/README.md index dca043b..992c987 100644 --- a/README.md +++ b/README.md @@ -175,3 +175,89 @@ else: print("Нет.") ``` +## Решение задач из файла `Задания_олимпиады_инф.docx` +**1.** Для детей решили вырезать разные геометрические фигуры: круг, треугольник, квадрат. Каждой фигуры по одной. Сколько останется бумаги по площади после обрезки. Считается, что все фигуры можно вырезать на листе бумаге размером AxB. Для каждой фигуры даны соответствующие параметры: для круга - радиус, для квадрата и треугольника равностороннего - длина стороны. +Пример: +| Ввод | Вывод | +| --- | --- | +| 5 6
1 2 3 | 18.96 | +**Решение:** +```Python +from math import pi, sqrt + +a, b = input().split(" ") +r, f, h = input().split(" ") +a, b, r, f, h = int(a), int(b), int(r), int(f), int(h) + +paperSquare = a*b +rectSquare = f**2 +circleSquare = r**2*pi +triangleSquare = (h**2*sqrt(3))/4 +result = round(paperSquare-circleSquare-rectSquare-triangleSquare, 2) +print(result) +``` +**2.** Красивое число делится на 7 и не содержит повторяющихся цифр, например, 21 - красивое число, а 77 - нет. Найти на заданном отрезке все красивые числа. Если таких чисел нет, то вывести сообщение "NO". +| Ввод | Вывод | +| --- | --- | +| 5 20 | 7 14 | +**Решение:** +```Python +a, b = input().split(" ") +a, b = int(a), int(b) + +def isPrettyNumber(n): + digits = [i for i in str(n)] + unique_digits = set(digits) + return n % 7 == 0 and len(digits) == len(unique_digits) + +existPrettyNumbers = False +for i in range(a, b+1): + if isPrettyNumber(i): + print(i, end=" ") + existPrettyNumbers = True + +if not existPrettyNumbers: + print("NO") +else: + print() +``` +**3.** Рыбаки поймали карпа, карася, ерша и т.д. Не все смогли выловить весь набор рыб. Каждому хочется отнести домой один и тот же комплект рыб. Смогут ли они это сделать, если собрать каждого вида рыб и разделить поровну? Учтите, что рыбы должны быть целыми. +####### Формат ввода +В первой строке вводится через пробел N количество рыбаков и P количество наименований рыб. Каждое число не превосходит 10 000. Далее в каждой N-ой строке записаны P чисел - количество рыб соответствующих наименований (от 0 до 109). +####### Формат вывода +На первой строке вывести "Yes", если это возможно и далее на второй строке соответствующее количество рыб каждого наименования через пробел. Если это не возможно, то вывести "No". +Пример: +| Ввод | Вывод | +| --- | --- | +| 3 2
12 6
0 8
3 1 | Yes
5 5 | +**Решение:** +```Python +fishersmen, categories = input().split(" ") +fishersmen, categories = int(fishersmen), int(categories) +fish = [0 for _ in range(categories)] # Заполняем массив нулями +# [0, 0, 0, ... P] + +for i in range(fishersmen): + # Ниже собираем сколько каждого вида рыбы поймал рыбак + # Это список вида [8, 4, 6, ... P] + collectedFish = input().split(" ") + # Ниже преобразуем каждый элемент списка из строки в число + collectedFish = [int(i) for i in collectedFish] + # Прибавляем количесво пойманной рыбы каждого вида к списку fish + for j, fishAmount in enumerate(collectedFish): + fish[j] += fishAmount + +# Далее просто проверяем делится ли количество пойманной рыбы нацело +# на количество рыбаков +canDivide = True +for i in fish: + if i % fishersmen != 0: + canDivide = False + +if canDivide: + print("Yes") + fishAmount = [str(i//fishersmen) for i in fish] + print(" ".join(fishAmount)) +else: + print("No") +```