Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 06.04.2020
Сообщений: 6

Уменьшить время работы программы

06.04.2020, 15:25. Показов 3229. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, дана программа, в которой дан лимит времени 200 ms.

В лицее на уроках информатики ответы учеников оцениваются целым числом баллов от 2 до 5. Итоговая оценка по информатике выставляется как среднее арифметическое оценок на всех уроках, округленное до ближайшего целого числа. Если среднее значение находится ровно посередине между двумя целыми числами, то оценка округляется вверх.

Примеры округления оценок приведены ниже.
Оценки на уроках: 2, 3, 5. Среднее арифметическое: Итоговая оценка: 3
Оценки на уроках: 3, 3, 4, 4. Среднее арифметическое: Итоговая оценка: 4
Оценки на уроках: 5, 5, 5, 3, 5. Среднее арифметическое: Итоговая оценка: 5

Все ученики лицея стремятся получить итоговую оценку по информатике не ниже 4 баллов. К сожалению, один из учеников получил на уроках a двоек, b троек и c четверок. Теперь он планирует получить несколько пятерок, причем хочет, чтобы итоговая оценка была не меньше 4 баллов. Ему надо понять, какое минимальное количество пятерок ему необходимо получить, чтобы добиться своей цели.

Требуется написать программу, которая по заданным целым неотрицательные числам a, b и c определяет минимальное количество пятерок, которое необходимо получить ученику, чтобы его итоговая оценка по информатике была не меньше 4 баллов.

решение:
Pascal
1
2
3
4
5
6
7
8
9
10
11
Var sred,sr:real;
a,b,c,x:int64;
Begin
Read(a,b,c);
sr:=a*2+b*3+c*4;
While sred<3.5 do begin
  sred:=sr/(a+b+c+x)+5*x/(a+b+c+x);
  x:=x+1;
end;
Writeln(x-1);
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2020, 15:25
Ответы с готовыми решениями:

Уменьшить время работы компилятора
var a, a2: string; i, k: integer; begin read(a); for i := 1 to length(a) do begin a2 := copy(a, i, 1); ...

Уменьшить время выполнения программы
У меня есть программа var n,i:integer; begin read(n); for i:=1 to n do if n mod i = 0 then write(i,' '); end. ...

Уменьшить время выполнения программы
Здравствуйте, мне дана задача, на решение которой дан лимит по времени: 400ms. В моем решении на больших числах программа выполняется 401 -...

4
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8653 / 4488 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
06.04.2020, 16:29
Попробуйте решить уравнение относительно переменной d
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{2a+3b+4c+5d}{a+b+c+d}=3,5
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{4a+6b+8c+10d}{a+b+c+d}=7
Далее получите простую формулу для вычисления d.
При делении используйте целочисленное деление. И если модуль от деления будет ненулевым - увеличьте значение d на 1. Учтите возможность того, что возможен случай с d<=0.

Добавлено через 14 минут
Да, только что попробовал и сдал эту задачу на mccme.

Добавлено через 1 минуту
Название задачи "Улучшение успеваемости".
0
0 / 0 / 0
Регистрация: 06.04.2020
Сообщений: 6
06.04.2020, 17:26  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
Var a,b,c:integer;
d:double;
begin
  Read(a,b,c);
  d:=a+b/3-c/3;
  If d<=0 then d:=0;
  If (d>0) and (Frac(d)>0) then d:=int(d)+1;
  Writeln(d);
end.
Вот моя программа но контест выдает ошибку на 27 тесте. Где может быть недочет?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8653 / 4488 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
06.04.2020, 18:18
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Все вычисления должны быть целочисленными.
Переменные a, b, c, d - тип int64 - т.к. ограничены значением 1015 и d может оказаться отрицательным.
Деление - div и mod.

Добавлено через 15 минут
Возможен случай округления при вычислении "плавучки".

Попробуйте
Pascal
5
  d:=(a+b-c)/3;
Хотя я предпочёл бы работать с целыми числами. Причина проста - под целое число типа double без повреждения при помещении в такую переменную, выделено 52+1=53 бита, в то время как в int64 - 63 бита (т.к. под знак числа теряем один бит) .
Т.е. используя целый тип получаем выше точность.
0
0 / 0 / 0
Регистрация: 06.04.2020
Сообщений: 6
07.04.2020, 13:52  [ТС]
Спасибо большое! Все работает
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
Var a,b,c,d:int64;
begin
  Read(a,b,c);
  If (b=0) and (c=0) then begin
  d:=a;
  end
  else begin
  d:=(3*a+b-c) div 3;
  If d<0 then d:=0;
  If (3*a+b-c) mod 3>0 then d:=d+1;
  end;
  Writeln(d);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2020, 13:52
Помогаю со студенческими работами здесь

Смена типов данных во время работы программы
Люди я еще новичок и не знаю всех ф-ций, так что подскажите пожалуйста, как можно менять типы данных в паскале, в самом процессе...

Как сделать чтоб во время работы программы при нажатии определенных клавиш изменялось значение некоторых переменных?
Как сделать чтоб во время работы программы при нажатии определенных клавиш на клавиатуре изменялось значение некоторых переменных? ...

Как уменьшить время работы программы?
const nmax=10000; var a:array of integer; n,m,i,j,x:integer; f:boolean; begin randomize; repeat read(n); until...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru