Форум сайта python.su
0
Input: кол-во чисел N, их среднее арифметическое D
Output: N чисел, среднее арифметическое которых должно быть равно D. Все числа должны быть разными!
Офлайн
0
Если просто побаловаться то прямолинейный брут сойдет наверное:
import random
DELTA = 2
def average(lst):
return sum(lst)/len(lst)
def backaverage_brute(N, av):
low = int(av/DELTA)
high = int(av + (av - av/DELTA))
c = 0
while True:
c += 1
res = [random.randint(low, high) for i in xrange(N)]
new_av = average(res)
if av == new_av:
return res, c
if __name__ == '__main__':
res = backaverage_brute(N=100, av=100)
print 'cycles: ', res[1]
print res
print 'average: ', average(res[0])
Отредактировано (Июнь 25, 2011 09:54:17)
Офлайн
0
Ах да, нужно лишь любое из всех возможных вариантов :) не обязательно все или какой-то конкретный.
p.s. вот еще такой вопрос. Есть N отрезков длинной 1м, нужно найти максимальную площадь прямоугольника, который составлен из N таких отрезков.
Вот мое решение, можно ли как-то попроще !?
N = int(open("input.txt").read())
if (N >= 4 and N % 2 == 0):
list = []
half = N/2
halfm = half-1
for x in xrange(1, halfm):
if x <= halfm:
list.append(x*(half-x))
list.sort()
open("output.txt", "w").write(str(list[-1]))
else:
print "susee\n"Офлайн
0
Если N является int'ом можно как-то сделать цикл for для среза, а не создавать для таких целей halfm!?
(это чтобы ни одно из слагаемых не было равно нулю)
вот, как-то так:
for x in N[1:-2]
Отредактировано (Июнь 25, 2011 14:54:48)
Офлайн