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

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

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

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



Сообщение: 41
ссылка на сообщение  Отправлено: 15.12.21 07:27. Заголовок: 12 - 272 (Джобс)


Здравствуйте, подскажите, пожалуйста, в чем ошибка? Что-то явно упускаю в рассуждениях.
 
m=0
for x in range(1,200):
for y in range (1,200):
for z in range (1,200):
s='1'*x+'3'*y+'13'*z
while '12' in s or '13' in s:
s=s.replace('12','21',1)
s = s.replace('31', '23', 1)
s = s.replace('13', '23', 1)
if s.count('1')==0:
summ=s.count('2')*2+s.count('3')*3
if summ==404:
m=max(m,x+y+z*2)
print(m)


Программа либо долго выполняется, либо выдает неправильный ответ,
Руками, конечно, задача решается недолго, но как ускорить программу ?

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





Сообщение: 44
ссылка на сообщение  Отправлено: 15.12.21 07:58. Заголовок: Без программы рассуж..


Без программы рассуждения такие:
заметим,что если будут стоять 13,то они заменятся на 23, и сумма 2+3=5 , тогда достаточно начальная строка около 160 элекментов.
Поэтому нужно ,чтобы были сначала 1, а потом 3.
заметим, 1113 превращается в 2223. Значит поставим две 3 и остальное 1. тогда 404-2*3=398. 398/2=199
значит 199 "1" и две "3"
199+2=201

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




Сообщение: 3093
ссылка на сообщение  Отправлено: 15.12.21 08:12. Заголовок: AnnaPershina пишет: ..


AnnaPershina пишет:
 цитата:
Руками, конечно, задача решается недолго, но как ускорить программу ?

Не стоит решать такие задачи программой (методом грубой силы).

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



Сообщение: 47
ссылка на сообщение  Отправлено: 21.12.21 03:34. Заголовок: Понятно. Спасибо...


Понятно. Спасибо.

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





Сообщение: 1
ссылка на сообщение  Отправлено: 04.01.22 21:13. Заголовок: А можно сочетать рас..


А можно сочетать рассуждение и программу. В данном случае мы видим, что 2 цифры меняются на 2, значит в итоге цифр будет столько же, сколько было. В итоговой строке только двойки и тройки, т.е. 2*x+3*y=404. А вот x и y пусть подберет программа. x+y искомый результат.

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



Сообщение: 55
ссылка на сообщение  Отправлено: 11.01.22 15:53. Заголовок: Рассуждения плюс Программа


Рассуждения Винниковой программа Паршиной (исправл.):
.. 
#12.272

m=0
for x in range(1,300):
for y in range (1,10):

s='1'*x+'3'*y
while '12' in s or '13' in s:
s=s.replace('12','21',1)
s = s.replace('31', '23', 1)
s = s.replace('13', '23', 1)
if s.count('1')==0:
summ=s.count('2')*2+s.count('3')*3
if summ==404:
m=max(m,x+y)
print(m)
# Rez = 201, t = 3 min

.
,

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





Сообщение: 27
ссылка на сообщение  Отправлено: 11.01.22 21:24. Заголовок: aln1947 пишет: Расс..


aln1947 пишет:

 цитата:
Рассуждения Винниковой программа Паршиной



После рассуждения можно, в данном случае, ограничиться этим:
 
for d in range(1, 1000):
for t in range(1, 1000):
if 2*d+3*t == 404:
print(d+t)


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





Сообщение: 119
ссылка на сообщение  Отправлено: 01.03.22 07:44. Заголовок: Винникова пишет: fo..


Винникова пишет:

 цитата:
for d in range(1, 1000):
for t in range(1, 1000):
if 2*d+3*t == 404:
print(d+t)



Очень, очень красивое решение!

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

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