На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 342
ссылка на сообщение  Отправлено: 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)


Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]


Администратор




Сообщение: 2242
ссылка на сообщение  Отправлено: 22.12.20 11:18. Заголовок: cabanov.alexey пишет..


cabanov.alexey пишет:
 цитата:
Не пойму где у меня ошибка.

В файле 27-39.py в архиве 27data.zip есть авторское решение в моей обработке.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 343
ссылка на сообщение  Отправлено: 22.12.20 11:57. Заголовок: У меня есть вопрос п..


У меня есть вопрос по вот этому фрагменту авторского решения:
 maxCenter = 0 
for x in range(1000):
if symmCount[x] % 2 == 1:
maxCenter = x


Мы находим максимальное симметричное число, которое можно поставить в центр.
Но максимум мы определяем по значению числа, а надо бы по сумме цифр.
Авторский алгоритм ставит в центр 959, мой же ставит 898, у которого сумма цифр больше.

Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2243
ссылка на сообщение  Отправлено: 22.12.20 12:09. Заголовок: cabanov.alexey пишет..


cabanov.alexey пишет:
 цитата:
Мы находим максимальное симметричное число, которое можно поставить в центр.
Но максимум мы определяем по значению числа, а надо бы по сумме цифр.

Вы правы, спасибо. Ответ и решение исправлены.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 345
ссылка на сообщение  Отправлено: 24.12.20 08:06. Заголовок: Вы правы, спасибо. ..



 цитата:
Вы правы, спасибо.



Нет, всё таки я не прав!
Слона то я и не приметил!
По условию задачи необходимо собрать симметричное число с наибольшим значением и узнать его сумму цифр.
А я считал симметричное число с наибольшей суммой цифр, не акцентируясь на значении числа, а зря!
Получается так, что действительно 959 по центру приоритетнее 858, так как значение числа будет больше.

Так что ответ действительно 508801

Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 346
ссылка на сообщение  Отправлено: 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)


Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2258
ссылка на сообщение  Отправлено: 24.12.20 18:16. Заголовок: Да, я тоже читать не..


Да, я тоже читать не умею. Вернул все назад.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2038
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет