Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
1

Оптимизация задачи

16.12.2016, 09:25. Просмотров 457. Ответов 13
Метки нет (Все метки)

Помогите оптимизировать программу если это возможно и может кто переписать её на другой язык программирования, чтобы это было быстрее. Решаю олимпиаду, всё правильно, но выхожу за рамки по времени ( на 10%)
Pascal
1
2
3
4
5
6
7
8
9
10
11
var s,a:longint;
    n,p:real;
begin
read(s); read(n); read(a);
n:=n+a-1;
while a<=n do begin
                 p:=p+(s/(a*(a+1)));
                 a:=a+1;
                 end;
write(p:100:3);
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2016, 09:25
Ответы с готовыми решениями:

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

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии &quot;оптимизатора&quot; в какой то умной книжке был...

Оптимизация Кода задачи
Сама задача: Корабль сначала плыл заданным курсом (север, восток, Юг, запад). Потом его курс был...

Оптимизация олимпиадной задачи по программированию
Есть задача: Ограничение времени на тест: 5 сек Ограничение памяти на тест: 256 Мб Условие...

Оптимизация задачи вывода количество нужных партий и людей
Добрый день. Есть простая задача, она реализована, но пока реализована криво. Из-за недостатка...

13
Hikari
Хитрая блондиночка $)
1455 / 968 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
16.12.2016, 09:44 2
Тут не программу а формулу нужно оптимизировать.
Это для математиков задачка
0
Puporev
Модератор
56358 / 43130 / 29833
Регистрация: 18.05.2008
Сообщений: 102,497
16.12.2016, 09:48 3
А задание-то хоть какое?
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 09:55  [ТС] 4
Цитата Сообщение от Hikari Посмотреть сообщение
Тут не программу а формулу нужно оптимизировать.
Это для математиков задачка
Так формула дана в задаче.

Задача про банк.
Начисляются проценты по формуле p=s/(a*(a+1)) и складываются на отдельный счёт (кол-во рублей и копеек может быть дробным). Каждый год коэффициент A увеличивается на 1.
Нужно написать калькулятор процентов для такого вклада.
Начальная сумма, коэффициент А в первый год и кол-во лет задаются.

Мне просто кажется тут на паскале лучше не сделать, а система проверяющая говорит что слишком долго выполняется программа (1.091 в последних тестах про ограничении в 1 секунду)
0
Puporev
Модератор
56358 / 43130 / 29833
Регистрация: 18.05.2008
Сообщений: 102,497
16.12.2016, 10:09 5
Цитата Сообщение от fjughi Посмотреть сообщение
тут на паскале лучше не сделать,
Сделать, просто не нужно решать в лоб, через цикл, это же олимпиада, Вам Hikari, правильно указала
Цитата Сообщение от Hikari Посмотреть сообщение
Тут не программу а формулу нужно оптимизировать.
Чтобы решение свелось к элементарному
Pascal
1
p:=формула
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 10:19  [ТС] 6
Так а помогите тогда, а у меня уже нет идей куда двигаться дальше
0
Puporev
Модератор
56358 / 43130 / 29833
Регистрация: 18.05.2008
Сообщений: 102,497
16.12.2016, 10:35 7
Я так понял что нужно найти не процент(p), aсуму процентов нв отдельном вкладе, е очень понятное условие, если так, то может быть такое?
Pascal
1
2
3
4
5
6
sp:=0; //сумма процентов за N лет
for i:=1 to n do
 begin
  p:=s/((a+i-1)*(a+i)); //процент в данный год
  sp:=sp+s*p/100;//сумма процентов
 end;
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 10:46  [ТС] 8
Да, нужно сумму процентов.
Но формула P это не процент, а именно кол-во денег начисленных за этот год
0
Puporev
Модератор
56358 / 43130 / 29833
Регистрация: 18.05.2008
Сообщений: 102,497
16.12.2016, 10:47 9
Ну тогда
Pascal
1
sp:=sp+p;//сумма процентов
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 10:50  [ТС] 10
а разве у меня не так же написано? просто всё в ячейку P складывается, не используя дополнительную
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4597 / 2887 / 2247
Регистрация: 22.11.2013
Сообщений: 8,058
16.12.2016, 10:53 11
Каким компилятором проверяется решение?
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 10:56  [ТС] 12
Free pascal 2.4.4
на сайте official.contest.yandex.ru

Сама программа полностью рабочая. Проблема только в том, что я никак не вписываюсь по времени. 1.091 вместо разрешенной секунды в последних тестах
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4597 / 2887 / 2247
Регистрация: 22.11.2013
Сообщений: 8,058
16.12.2016, 11:01 13
Каковы ограничения на исходные данные?
0
fjughi
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 7
16.12.2016, 11:05  [ТС] 14
вот полное условие задачи:

Ограничение времени: 1 секунда
Ограничение памяти: 256 Мегабайт
Ввод: стандартный ввод или input.txt
Вывод: стандартный вывод или output.txt

В одном странном банке действуют очень необычные условия по вкладам. Согласно рекламе, проценты по вкладу начисляются ежегодно исходя из "коэффициента вычисления прибыли" (КВП) и зачисляются на отдельный счет (то есть НЕ прибавляются к сумме вклада). КВП изначально равен A и далее каждый год увеличивается на 1.
В договоре указана точная формула вычисления процентов за год:
P = S / (A * (A + 1)),
где P - проценты за год, S - сумма вклада, A - КВП на текущий год. Условия по вкладу остаются постоянными в течение всего срока хранения вклада.
Еще одна странность банка заключается в том, что на счете, куда зачисляются проценты, может храниться абсолютно любая сумма, даже если в ней не целое число рублей и копеек (например, на счете может храниться 1/3 рубля).
Кирилл хочет сделать вклад в этом странном банке таким образом, чтобы сумма накопленных процентов оказалась ненулевой. Напишите программу – «калькулятор», которая позволит вычислять сумму процентов, накопившихся за N лет хранения вклада.

Формат входных данных:
Единственная строка входного файла содержит три целых числа: S (сумма вклада), N (количество лет), A (начальное значение КВП, которое действует в первый год), разделенных пробелами (1 ≤ S, A ≤ 10^9, 1 ≤ N ≤ 10^18).

Формат выходных данных:
Выходной файл должен содержать одно вещественное число, округленное до 3 знаков после запятой – сумму накопленных процентов за N лет хранения вклада.
0
16.12.2016, 11:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 11:05

Оптимизация кода несложной задачи (Статистика всех введённых символов в строке)
Решение задачки(статистика всех введённых символов в строке) мне кажется слишком громоздким и...

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона...

Отмена задачи, запуск задачи после отмены, перезапуск уже запущенной задачи
Добрый день. Сейчас разбираю TPL и у меня возник вопрос следующего содержания: у меня есть пример...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru