Автор | Сообщение |
|
Отправлено: 28.11.21 18:12. Заголовок: Задание 17 (№ 4408 Л.Шастин)
цитата: | (№ 4408) (Л. Шастин) В файле 17-10.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10000 включительно. Определите сначала количество пар, сумма элементов которых при переводе в систему счисления с основанием 7 образует число-палиндром, а затем наибольшую сумму-палиндром в семеричной системе счисления. Под парой чисел подразумевается два идущих подряд элемента последовательности. |
| Правильно ли я понимаю условие задачи: Сначала складываются цифры в двух десятичных числах. Затем эта сумма переводится в семеричное число. Если это число является палиндромом, то я его засчитываю и нахожу наибольший среди них. Так? Вот мой код программы. У меня ответ слишком маленький. Где я делаю не так, пожалуйста, подскажите? a = [int(x) for x in open ('17-10.txt')] def c(x): x10 = 0 while x: x10 += x%10 x //= 10 return x10 def f(x): x7 = '' while x: s = x%7 x7 = str(s) + x7 x //= 7 return x7 def p(s): if len(s) > 1: rev = s[::-1] if (s == rev): return True return False ma = 0 count = 0 for i in range (1, len(a)): pal = f ( c(a[i-1]) + c(a [ i ] ) ) if p(pal): count += 1 ma = max(ma, int(pal) ) print(count, ma)
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 28.11.21 18:32. Заголовок: Сумма двух чисел пер..
|
|
|
|
Отправлено: 28.11.21 19:00. Заголовок: Спасибо большое! Я н..
Спасибо большое! Я не так поняла условие задачи. Усложнила его. Поняла, что элементы числа - это цифры, а там элементы пар - сами числа. Спасибо за короткий способ решения. Свое решение я тоже откорректировала, теперь с ответом сходится. a = [int(x) for x in open ('17-10.txt')] def f(x): x7 = '' while x: s = x%7 x7 = str(s) + x7 x //= 7 return x7 def p(s): if len(s) > 1: rev = s[::-1] if (s == rev): return True return False ma = 0 count = 0 for i in range (1, len(a)): pal = f(a[i-1] + a [ i ] ) if p(pal): count += 1 ma = max(ma, int(pal) ) print(count, ma)
|
|
|
|