Автор | Сообщение |
|
Отправлено: 12.03.23 17:11. Заголовок: 5804
Неправильная формулировка условия задачи в номере 5804. В качестве ответа укажите количество таких троек и "наибольшее произведение их цифр", а в ответе автор приводит наибольшее произведение четных цифр троек. Если требуется найти произведение цифр троек, программа должна вывести ответ: 37 455196672000 from fnmatch import * a = [int(x) for x in open('17-346.txt').readlines()] b = [] for i in range(2,len(a)): a1,a2,a3 = a[i-2],a[i-1],a s = str(a1)+str(a2)+str(a3) pch,pv = 1,1 for c in s: if c in '02468': pch*=int(c) pv*=int(c) if fnmatch(str(pch),'11*6*') and pch<=2*10**9: b+=[pv] print(len(b),max(b))
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 06.04.23 21:54. Заголовок: Все верно в условии...
Все верно в условии. Вот рабочая программа: def digits(x): s = str(x) result = 1 for d in s: if int(d) % 2 == 0: result *= int(d) return result cnt = 0 mx = 0 a = [int(c) for c in open('te.txt')] for i in range(len(a) - 2): multi = str(digits(a) * digits(a[i + 1]) * digits(a[i + 2])) if multi[:2:] == '11' and '6' in multi and int(multi) <= 2 * 10 ** 9: cnt += 1 mx = max(int(multi), mx) print(cnt, mx)
|
|
|
|
Отправлено: 14.04.23 02:34. Заголовок: sgglazkov пишет: Во..
sgglazkov пишет: цитата: | Вот рабочая программа: def digits(x): s = str(x) result = 1 for d in s: if int(d) % 2 == 0: result *= int(d) return result cnt = 0 mx = 0 a = [int(c) for c in open('te.txt')] for i in range(len(a) - 2): multi = str(digits(a) * digits(a[i + 1]) * digits(a[i + 2])) if multi[:2:] == '11' and '6' in multi and int(multi) <= 2 * 10 ** 9: cnt += 1 mx = max(int(multi), mx) print(cnt, mx) |
| Увы и ах, не работает она правильно, поскольку есть ошибки! Во-первых, изменено имя загружаемого файла! Во-вторых, ошибка в данной строке кода: multi = str(digits( a) * digits(a[i + 1]) * digits(a[i + 2]))
|
|
|
|
Отправлено: 14.04.23 03:57. Заголовок: sgglazkov пишет: mu..
Внимательно посмотрите на ранее опубликованный программный код: sgglazkov пишет: цитата: | multi = str(digits(a) * digits(a[i + 1]) * digits(a[i + 2])) |
| Благодарностей не жду, но совет на будущее даю: Если у вас используется сочетание "[ i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом. цитата: | multi = str(digits(a[ i] * digits(a[i + 1]) * digits(a[i + 2])) |
|
|
|
|
|
Отправлено: 14.04.23 03:43. Заголовок: nuriatalgatovna пише..
nuriatalgatovna пишет: {pre2] цитата: | a = [int(x) for x in open('17-346.txt').readlines()] b = [] for i in range(2,len(a)): a1,a2,a3 = a[i-2],a[i-1],a s = str(a1)+str(a2)+str(a3) pch,pv = 1,1 for c in s: if c in '02468': pch*=int(c) pv*=int(c) if fnmatch(str(pch),'11*6*') and pch<=2*10**9: b+=[pv] print(len(b),max(b)) |
|
` Ваш код трудно понять, поскольку отсутствует форматирование. Программы " заворачивайте" в тэг ' [' pre2' ]'...' [' /pre2' ]', пример указан в самом верху странички, при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание " [ i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.
|
|
|
|