Задача на питоне - Общение Python мододелов

Вопрос Задача на питоне

Регистрация
6 Авг 2013
Сообщения
84
Репутация
-1
Спасибо
0
Монет
0
Кузьме задали прочитать список книг разных авторов. Ознакомившись со списком авторов Кузьма удивился, ведь ранее он уже читал их произведения. Для каждого автора у Кузьмы определен показатель "интересности"

W i

, влияющий на скорость чтения книги следующим образом:

в первый день чтения книги Кузьма прочитает

1 0 ∗ W − 1 страниц (где W − 1 - текущий интерес к чтению) во второй и последующие дни чтения книги Кузьма будет читать 1 0 ∗ W i страниц ( W i -интересность текущей книги)Кузьма может читать книги в любом порядке, но если он взялся за определенную книгу - он обязательно дочитывает ее до конца. В день, когда Кузьма дочитал очередную книгу, он не берется за новую (не зависимо от того, сколько страниц он прочитал сегодня), при этом завтра, начав новую книгу, его интерес к чтению будет равен текущему.



Теперь Кузьма просит Вас посчитать: какое минимальное кол-во дней ему необходимо для прочтения заданного списка книг?



Формат ввода

В первой строке содержатся два числа: N ( 1 ≤ N ≤ 7 ) - кол-во книг и W 0 ( 1 ≤ W 0 ≤ 1 0 ) - стартовый интерес к чтению В последующих N строках содержатся по два числа: K i ( 1 ≤ K ≤

1000 ), W i ( 1 ≤ W i ≤ 10) - кол-во страниц в книге и ее интересность



Формат вывода

Выведите число: минимальное кол-во дней, необходимое для прочтения всех книг

Пример

Ввод Вывод

4 5

100 10

290 5

300 7

100 1

14

Примечания

Порядок прочтения книг в примере: 2-3-1-4

Кол-во страниц по дням Книга 2: 50+50+50+50+50+40, Книга 3: 50+70+70+70+40, Книга 1: 70+30, Книга 4: 100 - итого 6+5+2+1=14 дней

(Помогите,прошу)
 
Регистрация
6 Ноя 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
На print("Добро пожаловать в программу расчета времени чтения для Кузьмы!")

while True:
try:
N = int(input("Введите количество книг (от 1 до 7): "))
if 1 <= N <= 7:
break
else:
print("Пожалуйста, введите число от 1 до 7.")
except ValueError:
print("Пожалуйста, введите корректное целое число.")

while True:
try:
W0 = int(input("Введите начальный интерес к чтению (от 1 до 10): "))
if 1 <= W0 <= 10:
break
else:
print("Пожалуйста, введите число от 1 до 10.")
except ValueError:
print("Пожалуйста, введите корректное целое число.")

books = []
for i in range(N):
print(f"\nКнига {i+1}:")
while True:
try:
pages = int(input("Введите количество страниц (от 1 до 1000): "))
if 1 <= pages <= 1000:
break
else:
print("Пожалуйста, введите число от 1 до 1000.")
except ValueError:
print("Пожалуйста, введите корректное целое число.")

while True:
try:
interest = int(input("Введите интересность книги (от 1 до 10): "))
if 1 <= interest <= 10:
break
else:
print("Пожалуйста, введите число от 1 до 10.")
except ValueError:
print("Пожалуйста, введите корректное целое число.")

books.append((pages, interest))

books.sort(key=lambda x: x[1], reverse=True)

total_days = 0
current_interest = W0

for pages, interest in books:
pages_read = min(pages, 10 * (current_interest - 1))
days = 1
pages -= pages_read

if pages > 0:
days += (pages + 10 * interest - 1) // (10 * interest)

total_days += days
current_interest = interest

print(f"\nМинимальное количество дней, необходимое для прочтения всех книг: {total_days}")

print("\nОптимальный порядок чтения книг:")
sorted_books = sorted(enumerate(books, 1), key=lambda x: x[1][1], reverse=True)
for i, (pages, interest) in sorted_books:
print(f"Книга {i}: {pages} страниц, интересность {interest}")
 
Регистрация
8 Авг 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Ну что ты, мы же тут сейчас, в полчетвертого утра, с радостью поможем тебе. Выполним все твои капризы. Мы будем напрягаться, а ты просто будешь сидеть и даже ни капли не вникнешь в тему.
 
Регистрация
26 Сен 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
У нейронки спрашивай своих оползней и анаконд
 
Сверху Снизу