Имеется набор данных из натуральных чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить количество пар, в которых оба числа является палиндромами.
В первой строке входных данных задаётся количество чисел (1
N
9999). В каждой из последующих
строк записано одно целое положительное число, строго меньшее
.
Пример входных данных:
4
11
22
39
99
Выходные данные для приведённого выше примера:
В ответе укажите два числа через пробел: сначала значение для файла А, затем для файла B.
Переборное решение:
f = open(’4_A.txt’)
n = int(f.readline())
x = [int(i) for i in f]
cnt = 0
for i in range(n):
for j in range(i + 1, n):
s1 = str(x[i])
s2 = str(x[j])
if s1 == s1[::-1] and s2 == s2[::-1]:
cnt += 1
print(cnt)
Эффективное решение:
n = int(input())
count_of_palis = 0 # Количество палиндромов
ans = 0
for i in range(n):
x = int(input())
if str(x) == str(x)[::-1]:
# Если число - палиндром, оно образует пары со всеми ранее встреченными палиндромами
ans += count_of_palis
# Увеличиваем количество палиндромов
count_of_palis += 1
print(ans)