В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
блашер
блашер
22.02.2021 05:56 •  Информатика

решить задачу! В университете вышел новый приказ ректора, который был направлен против неявок на экзамены и лично против раздолбая Васи. По нему, студенту во время сессии предоставляется S попыток для сдачи N экзаменов. Причем, сессия считается сданной, только если успешно сдано некоторое количество экзаменов, которое заранее не известно студентам. Всем известный непотопляемый раздолбай Вася определил, что вероятность на халяву сдать i-й экзамен с одной попытки равна Pi (с двух попыток: 1-(1-Pi)2, с трёх: 1-(1-Pi)3 и т. д.) Ваша задача состоит в том, чтобы Васе остаться на любимом факультете. Нужно заранее распределить Васины S попыток между его N экзаменами так, чтобы сумма соответствующих вероятностей (а это есть не что иное, как ожидаемое количество успешно сданных экзаменов), по всем экзаменам, была максимальной. Формат входных данных
В первой строке заданы два натуральных числа S и N, не превосходящих 100 – количество попыток и экзаменов соответственно. На второй строке находятся N чисел, где i-е число задаёт вероятность Pi (0≤Pi≤1) – вероятность сдать на халяву i-й экзамен.

Формат выходных данных
Программа должна вывести N чисел, где i-е число – это количество попыток, которые нужно отвести на i-й экзамен. Совокупность этих чисел должна соответствовать распределению попыток, которое даст максимальное ожидаемое количество успешно сданных экзаменов. В случаях, когда попытки можно распределить несколькими , нужно выдать любое из распределений.

Пример
Вход
3 2
0.5 0.7

Выход
2 1

Показать ответ
Ответ:
Blueberrynyam
Blueberrynyam
05.01.2021 15:08

n, counter, spisok, new_spisok = int(input()), 0, [], []

while counter != n:

spisok.append(int(input()))

counter += 1

c1, c2 = int(input()), int(input())

for i in spisok:

if c1 <= i <= c2:

new_spisok.append(i)

print(new_spisok, len(new_spisok))

Объяснение:

1) хз зачем там цикл while, но раз в условии написано, то сделал через него;

2) скорее всего работать нужно со списками, а не массивами, так как append - метод списка;

3) если нужно, могу объяснить каждую строку;

4) формат вывода массива не указан, поэтому вывод обычного массива с его длиной через запятую;

5) нижние слеши это пробелы типа)

Объяснение:

0,0(0 оценок)
Ответ:
Unicornssss
Unicornssss
20.02.2022 14:06

Объяснение:

#include <iostream>

#include<vector>

#include <algorithm>

using namespace std;

int main() {

ios::sync_with_stdio(false);

int N, A, B;

cin >> N;

vector < vector <int>> IO;

int lastDay = 0;

for (int i = 0; i <  N; i++) {

 cin >> A >> B;

 IO.push_back(vector<int>());

 IO[i].push_back(A);

 IO[i].push_back(B);

 IO[i].push_back(i);

}

sort(IO.begin(), IO.end());

for (int i = 0; i < N; i++)

{

 if (lastDay >= IO[i][1]) {

  IO[i][0] = -1;

  IO[i][1] = -1;

 }

 else {

  if (lastDay < IO[i][0]) {

   lastDay = IO[i][1];

  }

  else if (lastDay >= IO[i][0]) {

   IO[i][0] = lastDay+1;

   lastDay = IO[i][1];

  }

 }

}

for (int i = 0; i < N; i++) {

 for (int j = 0; j < N; j++) {

  if (IO[j][2] == i) {

   cout << IO[j][0] << " " << IO[j][1] << endl;

   break;

  }

 }

}

return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота