Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
 Аватар для Biologist
63 / 19 / 0
Регистрация: 25.01.2023
Сообщений: 169

Выведите наименьшее количество оценок, которое предстоит исправить Феде на пятёрку

04.02.2023, 17:51. Показов 4218. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Федя следит за своей успеваемостью и очень серьёзно относится к среднему баллу. В частности, ему хотелось бы, чтобы средний балл не опускался ниже 4.
Ему разрешили пересдать любые работы и исправить оценку за них. Федя уверен, что сможет написать любую работу на 5.
На вход программе даётся число оценок N, затем N строк, в каждой оценка — число от 2 до 5.
Выведите наименьшее количество оценок, которое предстоит исправить Феде на пятёрку, а в следующей строке массив с новыми оценками. Если Федя может выбрать исправляемые оценки разными способами, можно вывести любой.
Если Федя обсчитался и с его средним баллом всё в порядке, выведите фразу “Всё в порядке, Федя!”
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2023, 17:51
Ответы с готовыми решениями:

Выведите наименьшее число парт, которое нужно приобрести для классов
В некоторой школе решили набрать три новых математических класса и оборудовать кабинеты для них новыми партами. За каждой партой может...

Выведите наименьшее число ходов которое, необходимо сделать чтобы фишка оказалась в клетке, содержащей число k
Вам дано поле, являющееся бесконечной таблицей умножения. В клетке с координатами (i,j) стоит целое число, равное i×j . Фишка стоит на...

Выведите минимальное количество чатов, которое нужно открыть
Веселые ребята решили организовать сборы для программистов. Первое, что им нужно было сделать, так это составить задачи для отбора. Однако...

7
 Аватар для Biologist
63 / 19 / 0
Регистрация: 25.01.2023
Сообщений: 169
05.02.2023, 05:05  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
GPA = 4               # Необходимый средний балл 
 
n = int(input()) 
 
scores = []           # Оценки 
counts = [0] * 4      # Количество двоек, троек, четвёрок и пятёрок 
shortage = n * GPA    # Недобор баллов до среднего 
corrections = [0] * 3 # Сколько надо исправить двоек, троек и четвёрок 
 
for _ in range(n): 
  d = int(input())  
  scores.append(d) 
  counts[d-2] += 1 
  shortage -= d 
 
if shortage <= 0: 
   
  print("Всё в порядке, Федя!") 
 
else: 
   
  if shortage <= 3*counts[0]: # Хватит ли исправления двоек? 
    corrections[0] = int(shortage / 3) + 1 
  else: 
    corrections[0] = counts[0] 
    shortage -= 3*counts[0] 
    if shortage <= 2*counts[1]: # Хватит ли исправления троек? 
      corrections[1] = int(shortage / 2) + 1 
    else: 
      corrections[1] = counts[1] 
      shortage -= 2*counts[1] 
      if shortage <= counts[2]: # Хватит ли исправления четвёрок? 
        corrections[2] = int(shortage) + 1 
      else: 
        corrections[2] = counts[2] 
       
  print(sum(corrections)) 
   
  for i, s in enumerate(scores): 
    if s == 2 and corrections[0] > 0: 
      scores[i] = 5 
      corrections[0] -= 1 
    if s == 3 and corrections[1] > 0: 
      scores[i] = 5 
      corrections[1] -= 1 
    if s == 4 and corrections[2] > 0:  
      scores[i] = 5  
      corrections[2] -= 1  
   
  print(scores)
Но не принимает, потому что:
0
 Аватар для IPredator
236 / 198 / 44
Регистрация: 21.01.2019
Сообщений: 975
05.02.2023, 06:25
Biologist,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
GPA = 4
n = int(input())
scores = [int(input()) for _ in range(n)]
counts = [scores.count(i) for i in range(2, 6)]
shortage = n * GPA - sum(scores)
corrections = [0, 0, 0]
if shortage > 0:
    if shortage <= 3 * counts[0]:
        corrections[0] = int(shortage / 3) + 1
    else:
        corrections[0] = counts[0]
        shortage -= 3 * counts[0]
        if shortage <= 2 * counts[1]:
            corrections[1] = int(shortage / 2) + 1
        else:
            corrections[1] = counts[1]
            shortage -= 2 * counts[1]
            if shortage <= counts[2]:
                corrections[2] = int(shortage) + 1
            else:
                corrections[2] = counts[2]
    print(sum(corrections))
    for i, s in enumerate(scores):
        if s == 2 and corrections[0] > 0:
            scores[i] = 5
            corrections[0] -= 1
        if s == 3 and corrections[1] > 0:
            scores[i] = 5
            corrections[1] -= 1
        if s == 4 and corrections[2] > 0:
            scores[i] = 5
            corrections[2] -= 1
    print(scores)
else:
    print("Всё в порядке, Федя!")
0
 Аватар для Biologist
63 / 19 / 0
Регистрация: 25.01.2023
Сообщений: 169
05.02.2023, 06:39  [ТС]
Система опять отвечает, что в некоторых случаях можно было бы обойтись меньшим количеством пятёрок.
0
 Аватар для IPredator
236 / 198 / 44
Регистрация: 21.01.2019
Сообщений: 975
05.02.2023, 07:17
Biologist,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
GPA = 4
n = 6
scores = [3, 3, 3, 4, 4, 4]
counts = [scores.count(i) for i in range(2, 6)]
shortage = n * GPA - sum(scores)
corrections = [0, 0, 0]
if shortage > 0:
    if shortage <= 3 * counts[0]:
        corrections[0] = int(shortage / 3) + 1
    else:
        corrections[0] = counts[0]
        shortage -= 3 * counts[0]
        if shortage <= 2 * counts[1]:
            corrections[1] = int(shortage / 2) + 1
        else:
            corrections[1] = counts[1]
            shortage -= 2 * counts[1]
            if shortage <= counts[2]:
                corrections[2] = int(shortage) + 1
            else:
                corrections[2] = counts[2]
    print(sum(corrections))
    for i, s in enumerate(scores):
        if s == 2 and corrections[0] > 0:
            scores[i] = 5
            corrections[0] -= 1
        if s == 3 and corrections[1] > 0:
            scores[i] = 5
            corrections[1] -= 1
        if s == 4 and corrections[2] > 0:
            scores[i] = 5
            corrections[2] -= 1
    print(scores)
else:
    print("Всё в порядке, Федя!")
0
 Аватар для Biologist
63 / 19 / 0
Регистрация: 25.01.2023
Сообщений: 169
05.02.2023, 08:51  [ТС]
Теперь сообщает, что нужны пятёрки там, где всё в порядке.
0
 Аватар для Biologist
63 / 19 / 0
Регистрация: 25.01.2023
Сообщений: 169
05.02.2023, 08:57  [ТС]
Предлагают вот такое решение, только нужно исправить первые 2 строки, но я не знаю – как.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from random import choices as ch, randint as ri 
print(*(a := ch(range(2, 6), k=ri(1, 10)))) 
if sum(a) / len(a) >= 4: 
    print('Всё в порядке, Кондратий!') 
else: 
    k, x = 0, 2 
    while sum(a) / len(a) < 4: 
        if x in a: 
            a[a.index(x)] = 5 
            k += 1 
        else: 
            x += 1 
    print(k) 
    print(*a)
Сначала исправляет двойки, если мало, тройки и т. д., пока средний балл станет не меньше четырёх.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
05.02.2023, 08:57
Лучший ответ Сообщение было отмечено Biologist как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
from statistics import mean
a = [int(input()) for _ in range(int(input()))]
if mean(a) < 4:
    k = 0
    while mean(a) < 4:
        k += 1
        a[a.index(min(a))] = 5
    print(k, a, sep='\n')
else:
    print('Всё в порядке, Федя!')
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2023, 08:57
Помогаю со студенческими работами здесь

Выведите минимальное количество секунд, которое потребуется дилеру.
Работать дилером в казино занятие довольно скучное и однообразное. Сидишь и мешаешь карты... Что тут может быть интересного? Дабы не...

Выведите в файл то число, которое встречается в массиве наибольшее количество раз
Большее из частейших Прочитайте из первой строки число n, 1 ≤ n ≤ 15 000, со второй строки – n элементов массива a, -32 767 ≤ a ≤...

Узнать наименьшее количество пассажиров, которое требуется пересадить
В час пик на остановку одновременно подъехали три маршрутных такси, следующие по одному маршруту, в которые тут же набились пассажиры....

Выведите количество нулей, на которое заканчивается произведение всех простых чисел на отрезке от A до B
1. Оказывается, простое число — это такое натуральное число, которое имеет ровно два различных натуральных делителя, то есть делится без...

Выведите на экран количество лет, которое жильцу удастся прожить в квартире до выселения
Составьте программу для решения одной из следующих задач. Гражданин Петров, плохо усвоивший в школьном курсе математики тему «Сложные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru