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

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

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

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





Сообщение: 22
ссылка на сообщение  Отправлено: 28.02.24 18:49. Заголовок: (№6189) (Р.Сорокин)


(№ 6189) (Р. Сорокин) Назовём маской числа последовательность цифр, в которой такжемогут встречаться следующие символы:
— символ «#» означает любую последовательность четных цифр произвольной длины; втом числе «#» может задавать и пустую последовательность.
— символ «?» означает одну любую цифру.
Например, маске 1#9? соответствуют числа 190, 146891.
Найдите все натуральные числа, которые не превышают 10^11
, соответствуют маске1 23#45?67 и делятся на 257. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого число – частное от деления этого числа на 257.
В этой задаче у меня не сходится ответ: ответ у автора:
788565321 2826399
7855635321 28156399
7865679321 28192399
78156939321 280132399
78856113321 282638399
78956553321 282998399

А у меня ответ получается в несколько раз больше по количеству чисел. Подскажите, где моя ошибка?
 
R = ['0', '2', '4', '6', '8']
for i in range(257, 10 ** 11 + 1, 257):
s = str(i)
if not(s[:3] == '123' and s[-5:-3] == '45' and s[-2:] == '67'):
continue
if len(s) == 7:
print(i, i / 257)
else:
substr = s[3:-5]
flag = True
for ch in substr:
if not(ch in R):
break
if flag:
print(i, i / 257)


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







Сообщение: 23
ссылка на сообщение  Отправлено: 28.02.24 18:52. Заголовок: Мой ответ просто гиг..


Мой ответ просто гигантский:
123445067 480331.0
1232245867 4794731.0
1233145367 4798231.0
1237745667 4816131.0
1238645167 4819631.0
12304345567 47876831.0
12305245067 47880331.0
12308945867 47894731.0
12309845367 47898231.0
12314445667 47916131.0
12315345167 47919631.0
12319045967 47934031.0
12319945467 47937531.0
12324545767 47955431.0
12325445267 47958931.0
12330045567 47976831.0
12330945067 47980331.0
12334645867 47994731.0
12335545367 47998231.0
12340145667 48016131.0
12341045167 48019631.0
12344745967 48034031.0
12345645467 48037531.0
12350245767 48055431.0
12351145267 48058931.0
12355745567 48076831.0
12356645067 48080331.0
12360345867 48094731.0
12361245367 48098231.0
12365845667 48116131.0
12366745167 48119631.0
12370445967 48134031.0
12371345467 48137531.0
12375945767 48155431.0
12376845267 48158931.0
12381445567 48176831.0
12382345067 48180331.0
12386045867 48194731.0
12386945367 48198231.0
12391545667 48216131.0
12392445167 48219631.0
12396145967 48234031.0
12397045467 48237531.0

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





Сообщение: 24
ссылка на сообщение  Отправлено: 28.02.24 20:13. Заголовок: Неверно указала авто..


Неверно указала авторские ответы, вот они:
123445067 480331
1232245867 4794731
1238645167 4819631
12386045867 48194731

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





Сообщение: 268
ссылка на сообщение  Отправлено: 29.02.24 11:09. Заголовок: Перед Break надо опу..


Перед Break надо опустить флажок
 
R = ['0', '2', '4', '6', '8']
for i in range(12300000-12300000%257, 10 ** 11 + 1, 257):
s = str(i)
if s[:2]!='12': break
if not (s[:3] == '123' and s[-5:-3] == '45' and s[-2:] == '67'):
continue
if len(s) == 8:
print(i, i / 257)
else:
substr = s[3:-5]
flag = True
for ch in substr:
if not (ch in R):
flag=False
break
if flag:
print(i, i // 257)


Ваш код быстро выдаст первые три ответа, но сильно задержится с последним.
если его поправить, как я показала, то он тоже быстро справится.

Вот другой код, который быстро решает задачу.
 
from itertools import *
sp=lambda k: [''.join(c) for c in product('02468',repeat=k)]
sp=sp(0)+sp(1)+sp(2)+sp(3)
for i in range(12300000,10**9+1):
s=str(i)
if s[:2]!='12': break
if s[:3]=='123' and s[3:-5] in sp and s[-5:-3]=='45' and s[-2:]=='67' :
for c in sp:
num=(int(s[:3]+ c +s[-5:]))
if num%257==0: l.append((num, num//257))
print(*sorted(l), sep='\n')


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





Сообщение: 25
ссылка на сообщение  Отправлено: 29.02.24 11:10. Заголовок: Ошибку нашла. В усло..


Ошибку нашла. В условии нужно было флаг опустить
 
if not(ch in R):
flag = False
break


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

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