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

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

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

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



Сообщение: 54
ссылка на сообщение  Отправлено: 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)


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







Сообщение: 2
ссылка на сообщение  Отправлено: 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


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





Сообщение: 424
ссылка на сообщение  Отправлено: 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



Запусти предложенный код и убедись - не работает

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



Сообщение: 59
ссылка на сообщение  Отправлено: 11.04.23 18:15. Заголовок: спасибо!..


спасибо!

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





Сообщение: 410
ссылка на сообщение  Отправлено: 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])



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



Сообщение: 69
ссылка на сообщение  Отправлено: 17.04.23 15:51. Заголовок: s11kai Я не скачиваю..


s11kai Я не скачиваю файлы каждый раз, а перезаписываю один и тот же для разных задач. Файл к заданию правильный, просто с другим названием.

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





Сообщение: 416
ссылка на сообщение  Отправлено: 17.04.23 16:21. Заголовок: Ar3turrr пишет: Я ..


Ar3turrr пишет:

 цитата:
Я не скачиваю файлы каждый раз, а перезаписываю один и тот же для разных задач. Файл к заданию правильный, просто с другим названием.



Как участникам форума тогда понять, какой файл был использован, где и как его найти, если название одно, заголовки другие, а содержание кода вообще другое

из шапки следует, что работаем с файлом 24 - 215
Ar3turrr пишет:

 цитата:
with open('24-215.txt') as file:



Но в заданиях 24 нет задания 5175

Ar3turrr пишет:

 цитата:
Заголовок: 5175 неверный ответ



Как пользователю понять из какого раздела данная задача?

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





Сообщение: 422
ссылка на сообщение  Отправлено: 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:



Верный номер задания догнал по данному делителю:


 цитата:
if i % 401 == 0:



Я фигею, вообще-то, это задание из егэ 17, вот его условие:

В файле 17-300.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10000 включительно. Найдите все тройки элементов последовательности, в которых хотя бы одно число делится на сумму цифр двух других чисел в тройке, а сумма чисел тройки больше, чем максимальный элемент последовательности кратный 401. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

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





Сообщение: 423
ссылка на сообщение  Отправлено: 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))


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





Сообщение: 95
ссылка на сообщение  Отправлено: 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])


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





Сообщение: 485
ссылка на сообщение  Отправлено: 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

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





Сообщение: 99
ссылка на сообщение  Отправлено: 27.06.23 18:46. Заголовок: NameError: name '..



 цитата:
NameError: name 'permutations' is not defined


Строка
from itertools import *
решит эту проблему (у меня просто сразу все библиотеки подключены, не заметила, что строки нет в коде)

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





Сообщение: 488
ссылка на сообщение  Отправлено: 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

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





Сообщение: 495
ссылка на сообщение  Отправлено: 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

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

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