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

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

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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.04.20 11:12. Заголовок: Задача 27. Решение на сколько баллов?


Дан набор из N целых положительных чисел. Из них нужно выбрать и вывести два числа так, чтобы их сумма была нечётна, а произведение делилось на 5 и при этом было максимально возможным. Выбранные числа можно выводить в любом порядке. Если есть несколько подходящих пар, можно выбрать любую из них. Если подходящих пар нет, нужно вывести 0.

Напишите эффективную по времени и по памяти программу для решения этой задачи.

Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз.

Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта и не увеличивается с ростом N.
В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000). В каждой из последующих N строк записано одно натуральное число, не превышающее 100.

Пример входных данных:

5

1

2

4

5

7

Пример выходных данных для приведённого выше примера входных данных:

4 5

Из 5 чисел можно составить 10 пар. В данном случае условиям удовлетворяют две пары: (2, 5) и (4, 5). Суммы чисел в этих парах (7 и 11) нечётны, а произведения (10 и 20) делятся на 5. У всех остальных пар как минимум одно из этих условий не выполняется. Из двух возможных пар выводим ту, в которой больше произведение элементов.

Решение:
n=int(input())
a=[[0]*2,[0]*2]
b=[]
max_n=0
for i in range(n):
x=int(input())
ch=x%2 #признак четности
k5=x%5 #признак кратности 5
if k5>0:
k5=1
if a[ch][k5]<x:
a[ch][k5]=x
for i in range(2):
for j in range(2):
b.append((a [ i] [j]))
for i in range(len(b)-1):
for j in range(i+1,len(b)):
if (b [ i]+b[j])%2!=0 and b [ i]*b[j]%5==0 and b[ i]*b[j]>max_n:
max_n=b[ i]*b[j]
x1=b[ i]
x2=b[ j]
if max_n==0:
print(0)
else:
print(x1,x2)

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







Сообщение: 235
ссылка на сообщение  Отправлено: 18.04.20 13:07. Заголовок: Своеобразно. Решение..


Своеобразно. Решение верно и эффективно на 4 балла. Конечно отступы пропали, но мне кажется что вот эту часть
 for i in range(2): 
for j in range(2):
b.append((a [ i] [j]))
for i in range(len(b)-1):
for j in range(i+1,len(b)):
if (b [ i]+b[j])%2!=0 and b [ i]*b[j]%5==0 and b[ i]*b[j]>max_n:
max_n=b[ i]*b[j]
x1=b[ i]
x2=b[ j]

Можно просто заменить 3 условиями.

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

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