Прикреплённый файл «2012-12-14.yomkosti.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Радиолюбитель Петя решил собрать детекторный приемник. Для этого ему понадобился конденсатор емкостью C мкФ. В распоряжении Пети есть набор из n конденсаторов, емкости которых равны c1, c2, ..., cn, соответственно. Петя помнит, как вычисляется емкость параллельного соединения двух конденсаторов (Cnew = C1 + C2) и последовательного соединения двух конденсаторов (Cnew = (C1*C2)/(C1+C2)). Петя хочет спаять некоторую последовательно-параллельную схему из имеющегося набора конденсаторов, такую, что ее емкость ближе всего к искомой (то есть абсолютная величина разности значений минимальна). Разумеется, Петя не обязан использовать для изготовления схемы все конденсаторы. (Напомним определение последовательно-параллельной схемы. Схема, составленная из одного конденсатора, – последовательно-параллельная схема. Любая схема, полученная последовательным соединением двух последовательно-параллельных схем, – последовательно-параллельная, а также любая схема, полученная параллельным соединением двух последовательно-параллельных схем, – последовательно-параллельная).
5
6 Формат входных данных: В первой строке входных данных содержатся числа n и C. Во второй строке задается последовательность емкостей имеющихся в наличии конденсаторов с1, с2, ..., сn. Значения всех емкостей – вещественные числа. Для всех наборов входных данных n < 7.
7
8 Формат выходных данных: Выведите минимально отличающуюся от C емкость последовательно-параллельной схемы из имеющихся конденсаторов. Результат выводите с шестью знаками после запятой.
9 '''
10
11 # Не будем вводить n, само посчитается :)
12 C = float(raw_input().split()[1])
13 c = [float(e) for e in raw_input().split()]
14
15 def Key(e): return abs(C-e)
16
17 CT = min(c, key=Key)
18
19 def addc(c):
20 global CT
21 for i in xrange(len(c)-1):
22 for j in xrange(i+1,len(c)):
23 cn1 = c[i]+c[j]
24 cn2 = c[i]*c[j]/cn1
25 CT=min(CT, cn1, cn2, key=Key)
26 cn=c[:i]+c[i+1:j]+c[j+1:]
27 addc([cn1]+cn)
28 addc([cn2]+cn)
29
30 addc(c)
31 print "{0:6f}".format(CT)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2012-12-26 21:57:22, 0.5 KB) [[attachment:2012-12-14.joinsort.gen.py]]
- [получить | показать] (2012-12-26 21:57:12, 1.8 KB) [[attachment:2012-12-14.joinsort.py]]
- [получить | показать] (2012-12-26 21:56:19, 1.0 KB) [[attachment:2012-12-14.sumfact.py]]
- [получить | показать] (2012-12-26 21:56:47, 0.4 KB) [[attachment:2012-12-14.yomkosti.gen.py]]
- [получить | показать] (2012-12-28 15:10:53, 3.3 KB) [[attachment:2012-12-14.yomkosti.py]]
- [получить | показать] (2013-05-17 14:07:31, 1.7 KB) [[attachment:joinsort.py]]
Вам нельзя прикреплять файлы к этой странице.