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

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

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

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





Сообщение: 19
ссылка на сообщение  Отправлено: 10.06.21 14:56. Заголовок: Задача 2646


Код программы:
 
GPath = "" #__file__.rsplit("/", 1)[0] + "/"
def Z2644():
with open(GPath + "26-j2.txt") as file:
N = int(file.readline())
Data = [int(file.readline()) for i in range(N)]
#Data = 10, 37, 47, 47, 60, 65, 84
#N = 7
Data = sorted(Data)
SredA = sum(Data) // N
Median = Data[len(Data) // 2]
print("Среднее значение:", SredA)
for Median in range(SredA - 10, SredA + 10):
if Median > SredA: A, B = SredA, Median
else: A, B = Median, SredA
R = range(A, B + 1)
Data2 = [i for i in Data if i in R]
print("Интервал [%s;%s], Ответ: %s" % (A, B, len(Data2)))
Z2644()

Выводка:
 
Интервал [4993;5003], Ответ: 1121
Интервал [4994;5003], Ответ: 1027
Интервал [4995;5003], Ответ: 927
Интервал [4996;5003], Ответ: 825
Интервал [4997;5003], Ответ: 736
Интервал [4998;5003], Ответ: 616
Интервал [4999;5003], Ответ: 520
Интервал [5000;5003], Ответ: 423
Интервал [5001;5003], Ответ: 325
Интервал [5002;5003], Ответ: 224
Интервал [5003;5003], Ответ: 102
Интервал [5003;5004], Ответ: 193
Интервал [5003;5005], Ответ: 269
Интервал [5003;5006], Ответ: 361
Интервал [5003;5007], Ответ: 442
Интервал [5003;5008], Ответ: 528
Интервал [5003;5009], Ответ: 634
Интервал [5003;5010], Ответ: 725
Интервал [5003;5011], Ответ: 832
Интервал [5003;5012], Ответ: 921

Как видно, здесь нет того ответа, что равен 340
Зато верно получается ответ и среднее арифметическое в примере и даже медиана -_- В чём дело?
Очевидно, что дальше перебирать нет смысла, т.к. чем больше разница между медианой и средним арифметическим, тем больше число в ответе

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







Сообщение: 44
ссылка на сообщение  Отправлено: 11.06.21 10:07. Заголовок: У вас с нахождением ..


У вас с нахождением среднего проблема. И это задача 2644.

Хочешь 100? Готовься на 110! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 45
ссылка на сообщение  Отправлено: 11.06.21 10:10. Заголовок: Вот примеры. Ваш код..


Вот примеры. Ваш код соответствует генератору для data3.


 цитата:
from math import *
f = open('26-j2.txt')
n = int(f.readline())
a = sorted(map(int, f.readlines()[:n]))

s1, s2 = sorted([sum(a)/n, a[len(a) // 2]])
data1 = [s1 <= i <= s2 for i in a]
data2 = [i in range(ceil(s1), int(s2)+1) for i in a]
data3 = [i in range(int(s1), int(s2)+1) for i in a]

print(sum(data1))
print(sum(data2))
print(sum(data3))



Вывод:
340
340
442

Хочешь 100? Готовься на 110! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 21
ссылка на сообщение  Отправлено: 12.06.21 10:48. Заголовок: Так бы и написали, ч..


Так бы и написали, что среднее арифметическое надо не через // получать, а через ceil Одним словом охото, чтобы Джобса уволили за СЛИИИИШКОМ сложные задачки, которые даже решить нельзя по тому, что ЭТО ЕДИНСТВЕННАЯ из 26 задача, в которой среднее арифметическое не через // делается Я то все 57 прорешал, при том последние 21 (на деле я их в обратном порядке решаю) - одно и тоже самое

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





Сообщение: 48
ссылка на сообщение  Отправлено: 19.06.21 12:55. Заголовок: Среднее арифметическ..


Среднее арифметическое ВСЕГДА находится по одному и тому же принципу - сумма элементов деленная на их количество. То, что вы себе придумали какой-то "случай для решения 26 заданий" говорит, что вы не понимаете очевидного.

Решение в первом генераторе не через ceil, и оно точно правильное, так как исходит из постановки задачи.

Конкретно в вашем случае ошибка была в том, что вы расширяли диапазон, если нижняя граница нецелая. Ceil позволяет эту проблему решить для списка из целых чисел.

Я лишь обозначил проблему в вашем случае, чтобы указать на ошибку.

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

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