-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtwo_sum_1.py
56 lines (39 loc) · 2.36 KB
/
two_sum_1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
Рита и Гоша играют в игру. У Риты есть n фишек, на каждой из которых написано
количество очков. Сначала Гоша называет число k, затем Рита должна выбрать две
фишки, сумма очков на которых равна заданному числу.
Рите надоело искать фишки самой, и она решила применить свои навыки
программирования для решения этой задачи. Помогите ей написать программу
для поиска нужных фишек.
Формат ввода
В первой строке записано количество фишек n, 2 ≤ n ≤ 104.
Во второй строке записано n целых чисел —– очки на фишках Риты в диапазоне
от -105 до 105.
В третьей строке —– загаданное Гошей целое число k, -105 ≤ k ≤ 105.
Формат вывода
Нужно вывести два числа —– очки на двух фишках, в сумме дающие k.
Если таких пар несколько, то можно вывести любую из них.
Если таких пар не существует, то вывести «None».
"""
from typing import List, Optional, Tuple
def two_sum(arr: List[int], target_sum: int) -> Optional[Tuple[int, int]]:
for i in range(0, len(arr)):
for j in range(i+1, len(arr)):
if arr[i] + arr[j] == target_sum:
return arr[i], arr[j]
# По условию задачи пара обязательно должна найтись.
# Но предусмотрительность не помешает:
# если пара не найдена - вернём None, None (или можно выкинуть exception).
return None, None
def read_input() -> Tuple[List[int], int]:
_ = int(input())
arr = list(map(int, input().strip().split()))
target_sum = int(input())
return arr, target_sum
def print_result(result: Optional[Tuple[int, int]]) -> None:
if result is None:
print(None)
else:
print(" ".join(map(str, result)))
arr, target_sum = read_input()
print_result(two_sum(arr, target_sum))