Автор | Сообщение |
|
Отправлено: 22.12.20 07:47. Заголовок: Вопрос по 27.39
Уже довольно долго ломаю голову над этой задачей. 27А ответ получается, а в 27B получается 508803. Не пойму где у меня ошибка. :( Моё решение: f = open("27b.txt") n = int(f.readline()) d = dict() for i in range(n): x = f.readline().strip() if x in d: d[x] += 1 else: d[x] = 1 summa = 0 for i in range(100,999+1): s = str(i) s1 = s[::-1] if (s in d) and (s1 in d) and s!=s1: k = min(d[ s ], d[s1]) summa+=2*k*sum(map(int,s)) summa = summa/2 m = 0 for i in range(100,999+1): s = str(i) s1 = s[::-1] if (s in d) and (s1 in d) and s==s1: k = d[ s ] if k%2==1: k-=1 m = max(m, sum(map(int,s)) ) summa+=k*sum(map(int,s)) print(summa+m)
|
|
|
Ответов - 6
[только новые]
|
|
|
| Администратор
|
Сообщение: 2242
|
|
Отправлено: 22.12.20 11:18. Заголовок: cabanov.alexey пишет..
cabanov.alexey пишет: цитата: | Не пойму где у меня ошибка. |
|
В файле 27-39.py в архиве 27data.zip есть авторское решение в моей обработке.
|
|
|
|
Отправлено: 22.12.20 11:57. Заголовок: У меня есть вопрос п..
У меня есть вопрос по вот этому фрагменту авторского решения: maxCenter = 0 for x in range(1000): if symmCount[x] % 2 == 1: maxCenter = x Мы находим максимальное симметричное число, которое можно поставить в центр. Но максимум мы определяем по значению числа, а надо бы по сумме цифр. Авторский алгоритм ставит в центр 959, мой же ставит 898, у которого сумма цифр больше.
|
|
|
|
| Администратор
|
Сообщение: 2243
|
|
Отправлено: 22.12.20 12:09. Заголовок: cabanov.alexey пишет..
cabanov.alexey пишет: цитата: | Мы находим максимальное симметричное число, которое можно поставить в центр. Но максимум мы определяем по значению числа, а надо бы по сумме цифр. |
|
Вы правы, спасибо. Ответ и решение исправлены.
|
|
|
|
Отправлено: 24.12.20 08:06. Заголовок: Вы правы, спасибо. ..
Нет, всё таки я не прав! Слона то я и не приметил! По условию задачи необходимо собрать симметричное число с наибольшим значением и узнать его сумму цифр. А я считал симметричное число с наибольшей суммой цифр, не акцентируясь на значении числа, а зря! Получается так, что действительно 959 по центру приоритетнее 858, так как значение числа будет больше. Так что ответ действительно 508801
|
|
|
|
Отправлено: 24.12.20 08:07. Заголовок: Моё исправленное реш..
Моё исправленное решение: f = open("27b.txt") n = int(f.readline()) d = dict() for i in range(n): x = f.readline().strip() if x in d: d[x] += 1 else: d[x] = 1 summa = 0 for i in range(100,999+1): s = str(i) s1 = s[::-1] if (s in d) and (s1 in d) and s!=s1: k = min(d[ s ], d[s1]) summa+=2*k*sum(map(int,s)) summa = summa/2 m = 0 for i in range(100,999+1): s = str(i) s1 = s[::-1] if (s in d) and (s1 in d) and s==s1: k = d[ s ] if k%2==1: k-=1 m = max(m, int(s) ) summa+=k*sum(map(int,s)) print(summa+m)
|
|
|
|
| Администратор
|
Сообщение: 2258
|
|
Отправлено: 24.12.20 18:16. Заголовок: Да, я тоже читать не..
Да, я тоже читать не умею. Вернул все назад.
|
|
|
|