0
0 комментариев

Здравствуйте, имеется задача с e-olymp. Называется арбузы. Условие (украинский язык):
«На прилавку в один ряд лежать n кавунів. Відомо, що кожен кавун, крім першого та останнього, на 100 грам легший, ніж середнє арифметичне ваг його сусідів.

Знайдіть вагу m-ого кавуна з точністю до грама, якщо відомі ваги першого та останнього кавуна.

Входные данные
В одному рядку чотири числа, записані через проміжок:

n – кількість кавунів (2 ≤ n ≤ 10000),

a, b – вага першого та останнього кавуна у кілограмах (додатні дійсні числа, 0 < a, b ≤ 109),

m – номер кавуна, вагу якого потрібно знайти (ціле число, 1 ≤ m ≤ n).

Выходные данные
Виведіть вагу m-ого кавуна у кілограмах, заокруглена до тисячних або –1, якщо задача не має розв’язку.»
Вкратце опишу алгоритм:
Находим разность арифм. прогрессии, начинем прибавлять ее к первому члену, каждый раз увеличивая на 200 грамм, если приходим к последнему введенному члену, выводим нужный номер, иначе выводим -1.

def create(a,d):
    for i in range(1,n):
        a=a+d
        d=d+200
    return(a)
n,a,b,m=input().split()
n=int(n)
a=int(float(a)*1000)
b=int(float(b)*1000)
m=int(m)
if n==2:
    arr=[a,b]
    print("%.3f" % (arr[m-1]/1000))
    raise SystemExit
d=(b-a)/(n-1)
buf=a
g=create(buf,d)
while (g > b):
    g=create(buf,d)
    d=d-100
if g==b:
    d=d+100
    n=m
    h=create(buf,d)
    print("%.3f" % (h/1000))
else:
    print('-1')

  1. Код проходит только 55% тестов, 3 по времени валятся.
    Код на Python 3:

Добавить комментарий