Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: утренняя пробежка
1
  1  Иванов Иван, 21 сентября 2021 г. 12:05:21
      Требуемая точность возрастает квадратично (в примерах ошибки округлены, 1.15 обозначено за t):
503 * t^3 = 765 + 0.13e-3
88 * t^5 = 177 - 0.57e-3
176.1 * t^4 = 308.0 + 0.06e-5
100.3 * t^6 = 232.0 - 0.52e-5
8.02 * t^25 = 264.01 + 0.11e-7
233.13 * t^8 = 713.15 - 0.56e-7
149.327 * t^10 = 604.111 + 0.06e-9
83.499 * t^7 = 222.109 - 0.74e-9
209.3009 * t^6 = 484.1257 + 0.16e-11
69.5670 * t^9 = 244.7281 - 0.68e-11
11.80597 * t^17 = 127.04716 + 0.15e-13
53.99267 * t^19 = 768.41135 - 1.66e-13
Проблемы начинают появляться уже при 5 знаках после запятой, когда требуемая точность достигает точности double. Вот так ведет себя предпоследний пример при неаккуратном вычислении:
print(11.80597 * t**17) # 127.04715999999986, хотя на самом деле больше 127.04716!
  2  Меньшиков Фёдор Владимирович, 20 сентября 2021 г. 21:35:11
      Иванов Иван, так предложите тесты с ошибкой в обе стороны. Мне интересно. Для чистоты эксперимента найдите какая максимальная точность в тестах задачи (думаю 2-3 знака после запятой) и в предложенных тестах используйте такую же. Понял, что если дать вещественное число с 30 знаками читать, то ошибка будет куда угодно, хоть вверх, хоть вниз.
  3  Черепанв Ивн це эс шст шст пят сбк пе эм тчк эм е, 18 сентября 2021 г. 19:18:17
      Фёдор, так далекл я не копал. Простейшее решение без eps не проходит, а в целых числах зашло. Рациональное решение легко свести к целочисленному.
  4  Иванов Иван, 18 сентября 2021 г. 12:58:37
      Фёдор Владимирович, а как сравнение с eps поможет, ошибка же в обе стороны может быть? На каком-то шаге может получиться как y-eps, так и y+eps. Точность входных данных не задана, так что подобрать можно.
  5  Меньшиков Фёдор Владимирович, 17 сентября 2021 г. 21:59:10
      Ивн, а у Вас есть тест, где не хватает double + сравнение с eps для компенсации неточности?
  6  Черепанв Ивн це эс шст шст пят сбк пе эм тчк эм е, 14 сентября 2021 г. 5:40:03
      В этой задаче точности double недостаточно. Нужно решать в рациональных числах, считая исходные данные точными рациональными значениями. Обрабатывать научную нотацию не нужно.
  7  Ханин Алексей Павлович, 13 сентября 2021 г. 21:01:51
      #include <iostream>
#include <cmath>
using namespace std;
int main(){
double x,y;
int a=1;
cin >> x >> y;
while (x<y){
x=x+x*15/100;
a++;
}
cout << a;
return (0);
}
Проходит первые 13 тестов, дальше тупик, хотя вроде всё правильно
Задача 1128. Утренняя пробежка
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru