second file solution was finished
This commit is contained in:
86
README.md
86
README.md
@@ -175,3 +175,89 @@ else:
|
||||
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")
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user