Автор | Сообщение |
|
Отправлено: 13.05.25 05:21. Заголовок: тема 24 номер 342
342) (К. Багдасарян) Текстовый файл 24-337.txt состоит не более чем из 106 символов и содержит десятичные цифры и заглавные буквы латинского алфавита. Определите максимальное количество символов в непрерывной последовательности, которые могут представлять запись натурального числа в двенадцатеричной системе счисления без незначащих (ведущих) нулей, которое кратно 144. Цифры, числовое значение которых превышает 9, обозначены латинскими буквами, начиная с буквы А. Гарантируется наличие такой последовательности. Не могу сообразить почему такое решение не верное, начальные символы без 0, далее ноль включая,* несколько раз, перевожу в десятичную систему, проверяю делится ли число на 144, я проверяю в цикле делимость, а в решении пишут оканчивается на 00 (я поняла) а почему если я проверяю в цикле не работает import re ma=0 s = open('24-337.txt').readline() match = re.findall(r'(?:[1-9AB][0-9AB]*)',s ) for i in match: if int(i,12)%144==0: if len(i)>ma: ma=len(i) print(ma) посмотрела в коллеги решение на форуме [0]{2}(тогда ответ сходится!) не понимаю для чего еще продолжение выражения, поясните пожалуйста s = open('24-337.txt').readline() match = re.findall(r'(?:[1-9AB][0-9AB]*[0]{2})' ,s) a=[] for i in match: if int(i,12)%144==0: if len(i)>ma: ma=len(i) print(ma,"______________________")
|
 |

|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 4210
|
|
Отправлено: 03.06.25 09:30. Заголовок: Число делится на 144..
Число делится на 144=12*12, если в конце 12-ричной записи стоят два нуля.
|
 |

|
|
Отправлено: 17.06.25 04:10. Заголовок: тема 24 номер 342
Спасибо, что ответили! import re ma=0 s = open('24-337.txt').readline() match = re.findall(r'(?:[1-9AB][0-9AB]*)',s ) for i in match: if int(i,12)%144==0: if len(i)>ma: ma=len(i) print(ma) в этой программе я же проверяю, что делится на 144, но не пишу нули в конце и у меня не получается ответ, скажите пожалуйста, почему не работает такая проверка
|
 |

|
|
| Администратор
|
Сообщение: 4235
|
|
Отправлено: 17.06.25 09:50. Заголовок: elpov06 пишет: почем..
elpov06 пишет: цитата: | почему не работает такая проверка |
|
Потому что findall находит самые длинные возможные последовательности. Например, в строке X12340056X будет найдена подстрока 12340056, а нужно было найти 123400. Вы же не проверяете возможность усечения подстроки, полученной от findall.
|
 |

|
|
Отправлено: 18.06.25 04:24. Заголовок: спасибо) поняла..
спасибо) поняла
|
 |

|
|