Определите наибольшее значение с симметричной записью
Дан набор данных, состоящий из неотрицательных целых чисел. Из данного набора выбрали некоторые (или все) числа и записали их подряд без пробелов в произвольном порядке. Определите наибольшее значение с симметричной записью (читается справа налево и слева направо одинаково), кратное числу 5, которое может быть получено таким образом. Гарантируется, что искомое значение получить можно. Программа должна напечатать одно число – сумму цифр искомого значения.
Входные данные:
Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит одно целое неотрицательное число, каждое из которых меньше числа 10.
Пример входного файла:
10
8
3
2
3
5
9
5
3
9
9
Для указанных входных данных значением искомой суммы должно быть число 43. Соответствующее ей симметричное число имеет вид: 5939395
В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.
В ответе укажите два числа: сначала количество троек для файла А, затем для файла B.
Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
Ответ:
(для файла А) (для файла B)

Тренировочный вариант от 23.11.2020 «Евгений Джобс»
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
f = open('27-A.txt') n = int(f.readline()) a = [0]*10 for i in range(n): a[int(f.readline())]+=1 if a[5] >= 2: s = 0 m = 0 for i in range(10): s += (a[i] // 2)*2*i m = i s += m print(s) else: print(5) |
Ответ:
5
254363