Автор | Сообщение |
|
Отправлено: 05.04.23 20:58. Заголовок: 5175 неверный ответ
Правильный ответ: 838 3819 with open('24-215.txt') as file: l = [ int(i) for i in file] l2 = [] count = 0 mincount = 10 ** 6 for i in l: if i % 401 == 0: l2.append(i) max401 = max(l2) def F(a, b, c): A = B = C = 0 for i in str(b) + str(c): A += int(i) for i in str(a) + str(c): B += int(i) for i in str(a) + str(b): C += int(i) if a % A == 0 or b % B == 0 or c % C == 0 and (a + b + c) > max401: return True for i in range(len(l) - 2): if F(l[ i], l[ i + 1], l[ i + 2]): count += 1 mincount = min(mincount, l[ i] + l[ i + 1] + l[ i + 2]) print(count, mincount)
|
|
|
Ответов - 13
[только новые]
|
|
|
Отправлено: 06.04.23 17:29. Заголовок: Обратите внимание на..
Обратите внимание на приоритет операций в Python: and выполняется раньше чем or, а Вам здесь нужно связать два отдельных условия. Постановка вот таких скобок решит проблему if (a % A == 0 or b % B == 0 or c % C == 0) and (a + b + c) > max401: return True
|
|
|
|
Отправлено: 26.04.23 10:23. Заголовок: sgglazkov пишет: if..
sgglazkov пишет: цитата: | if (a % A == 0 or b % B == 0 or c % C == 0) and (a + b + c) > max401: return True |
| Запусти предложенный код и убедись - не работает
|
|
|
|
Отправлено: 11.04.23 18:15. Заголовок: спасибо!..
спасибо!
|
|
|
|
Отправлено: 16.04.23 07:34. Заголовок: Ar3turrr пишет: Пра..
Ar3turrr пишет: цитата: | Правильный ответ: 838 3819 with open('24-215.txt') as file: |
| Господа, подскажите, пожалуйста, о какой задаче идет разговор? Нашел 6 задач работающих с файлом 24-215.txt, но там везде прописано: "Определите максимальное... количество идущих подряд..." А у вас идет поиск минимального Ar3turrr пишет: цитата: | mincount = min(mincount, l[ i] + l[ i + 1] + l[ i + 2]) |
|
|
|
|
|
Отправлено: 17.04.23 15:51. Заголовок: s11kai Я не скачиваю..
s11kai Я не скачиваю файлы каждый раз, а перезаписываю один и тот же для разных задач. Файл к заданию правильный, просто с другим названием.
|
|
|
|
Отправлено: 17.04.23 16:21. Заголовок: Ar3turrr пишет: Я ..
Ar3turrr пишет: цитата: | Я не скачиваю файлы каждый раз, а перезаписываю один и тот же для разных задач. Файл к заданию правильный, просто с другим названием. |
| Как участникам форума тогда понять, какой файл был использован, где и как его найти, если название одно, заголовки другие, а содержание кода вообще другое из шапки следует, что работаем с файлом 24 - 215 Ar3turrr пишет: цитата: | with open('24-215.txt') as file: |
| Но в заданиях 24 нет задания 5175 Ar3turrr пишет: цитата: | Заголовок: 5175 неверный ответ |
| Как пользователю понять из какого раздела данная задача?
|
|
|
|
Отправлено: 26.04.23 09:51. Заголовок: Ar3turrr пишет: Пра..
Ar3turrr пишет: цитата: | Правильный ответ: 838 3819 with open('24-215.txt') as file: l = [ int(i) for i in file] l2 = [] count = 0 mincount = 10 ** 6 for i in l: if i % 401 == 0: |
| Верный номер задания догнал по данному делителю: Я фигею, вообще-то, это задание из егэ 17, вот его условие: В файле 17-300.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10000 включительно. Найдите все тройки элементов последовательности, в которых хотя бы одно число делится на сумму цифр двух других чисел в тройке, а сумма чисел тройки больше, чем максимальный элемент последовательности кратный 401. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
|
|
|
|
Отправлено: 26.04.23 10:15. Заголовок: Ar3turrr пишет: Пра..
Ar3turrr пишет: цитата: | Правильный ответ: 838 3819 |
| Вот два решения данной задачи, и оба дают ответ: 774 9700 #Вариант № 1 data = [ int(x) for x in open("17-300.txt") ] N = len(data) def sumDigits( n ): return sum( map(int, str(n)) ) max401 = max( x for x in data if x % 401 == 0 ) def valid( a, b, c ): return a % (sumDigits(b) + sumDigits(c)) == 0 or \ b % (sumDigits(a) + sumDigits(c)) == 0 or \ c % (sumDigits(a) + sumDigits(b)) == 0 count, mi = 0, None for i in range(N-2): s = sum(data[ i:i+3]) if valid(data[ i], data[i+1], data[i+2]) and s > max401: count += 1 if mi == None or s < mi: mi = s print( count, mi ) #Вариант № 2 with open('17-300.txt') as f: a = [int(x) for x in f.readlines()] ma=0 # ищем максимальное кратное 401 for j in range(len(a)): # аналог if a[j]>ma and a[j]%401==0: ma=a[j] def q(n): # ищем сумму цифр su = 0 # return sum( map(int, str(n)) ) while n: su = su + n%10 n = n//10 return su def f(x,y,z): # делится ли хотя бы одно число на сумму цифр двух других return x % (q(y) + q(z)) == 0 or y % (q(z) + q(x)) == 0 or z % (q(x) + q(y)) == 0 k=[] for j in range(len(a)-2): x = a[j] y = a[j+1] z = a[j+2] s = x+y+z if f(x,y,z) and s > ma : k.append(s) print(len(k),min(k))
|
|
|
|
Отправлено: 25.06.23 17:30. Заголовок: s= ma=max(c for c i..
задание 5175 s=[int(c) for c in open('c:/17-300.txt')] ma=max(c for c in s if c%401==0) def g(sp): return sum(sp)>ma and any(a%sum([int(d) for d in str(b)+str(c)])==0 for (a,b,c) in permutations(sp)) pa=[(s+s[i+1]+s[i+2]) for i in range(len(s)-2) if g(s[i:i+3])] print(len(pa),min(pa), pa[:10])
|
|
|
|
Отправлено: 26.06.23 17:40. Заголовок: Ж пишет: return su..
Ж пишет: цитата: | return sum(sp)>ma and any(a%sum([int(d) for d in str(b)+str(c)])==0 for (a,b,c) in permutations(sp)) |
| NameError: name 'permutations' is not defined
|
|
|
|
Отправлено: 27.06.23 18:46. Заголовок: NameError: name '..
цитата: | NameError: name 'permutations' is not defined |
| Строка from itertools import * решит эту проблему (у меня просто сразу все библиотеки подключены, не заметила, что строки нет в коде)
|
|
|
|
|
Отправлено: 28.06.23 02:20. Заголовок: Ж пишет: Строка fro..
Ж пишет: цитата: | Строка from itertools import * решит эту проблему |
| Нет, это не решит проблему " небрежно опубликованного" вами кода и даже с подключением библиотек! Не верите? Скопируйте опубликованный вами код, и, подключив библиотеки, запустите его на исполнение. (именно скопируйте, а не запускайте тот, что хранится на вашем компьютере) Ж пишет: цитата: | задание 5175 s=[int(c) for c in open('c:/17-300.txt')] ma=max(c for c in s if c%401==0) def g(sp): return sum(sp)>ma and any(a%sum([int(d) for d in str(b)+str(c)])==0 for (a,b,c) in permutations(sp)) pa=[(s +s[i+1]+s[i+2]) for i in range(len(s)-2) if g(s[i:i+3])] print(len(pa),min(pa), pa[:10]) |
| В результате этого получите, как минимум: TypeError: can only concatenate list (not "int") to list
|
|
|
|
Отправлено: 30.06.23 19:16. Заголовок: s11kai пишет: В рез..
Ж, вы молчите! Видимо я вас обидел своими придирками, s11kai пишет: цитата: | В результате этого получите, как минимум: TypeError: can only concatenate list (not "int") to list |
| простите, я не хотел этого! Дело в том, что html код данной странички воспринимает массив с переменной i как команду перехода на курсив внимательно посмотрите на ваш код: цитата: | pa=[(s+s[i+1]+s[i+2]) for i in range(len(s)-2) if g(s[i:i+3])] print(len(pa),min(pa), pa[:10]) |
| у вас идет: pa=[s - а далее все идет курсивом, это потому, что веб страница приняла ваш массив s[ i] за команду перехода на наклонный шрифт. избежать этого, есть два способа: первый - заменить i на j второй - перед i сразу после скобки ставить пробел С уважением, s11kai
|
|
|
|