second file solution was finished

This commit is contained in:
2023-05-28 14:16:38 +07:00
parent 84e61afb11
commit be2bc566c6

View File

@@ -175,3 +175,89 @@ else:
print("Нет.") print("Нет.")
``` ```
## Решение задач из файла `Задания_олимпиады_инф.docx`
**1.** Для детей решили вырезать разные геометрические фигуры: круг, треугольник, квадрат. Каждой фигуры по одной. Сколько останется бумаги по площади после обрезки. Считается, что все фигуры можно вырезать на листе бумаге размером AxB. Для каждой фигуры даны соответствующие параметры: для круга - радиус, для квадрата и треугольника равностороннего - длина стороны.
Пример:
| Ввод | Вывод |
| --- | --- |
| 5 6<br>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<br>12 6<br>0 8<br>3 1 | Yes<br>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")
```