Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2005-11-21 13:43:05

ROBOT
Олімпієць
Звідки: Ялта
Зареєстрований: 2005-10-26
Повідомлень: 158

Почему прошло тупое решение PIECE?

Я писал два варианта программы piece и прошли оба...
Но первый вариант очень тупой и поэтому я написал второй...
МоЁ первое решение: (большая погрешность)

{$N+}
var a,b,c,d,h,p,r,x1,x2,x3,y1,y2,y3:extended;
begin
    read(r,x1,y1,x2,y2,x3,y3);
  a:=sqrt(sqr(x1-x3)+sqr(y1-y3));
  b:=sqrt(sqr(x1-x2)+sqr(y1-y2));
  c:=sqrt(sqr(x2-x3)+sqr(y2-y3));
  p:sada+b+c)/2;
  h:=2*sqrt(abs(p*(p-a)*(p-b)*(p-c)))/c;
  if h-r>1e-6 then
    write('-1')
  else
    write(2*sqrt(abs(sqr(r)-sqr(h))));
end.


Я знаю тесты, на которых погрешность достигает 0.001
По идее такую прогу не должны были принять...


I have Delphi 7, BP 7.0, FP 1.0.4, Windows XP
Мои решения олимпиад на  Паскале: http://h0h0l.narod.ru/
Моя проверялка: http://www.proveryalka.narod.ru/
ICQ: 266367671

Поза форумом

 

#2 2005-11-21 15:38:50

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Почему прошло тупое решение PIECE?

Че за последгяя формула?
(это первый тур помни)


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#3 2005-11-21 19:25:32

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: Почему прошло тупое решение PIECE?

А почему погрешность тут большая?


ICQ 233-416-344

Поза форумом

 

#4 2005-11-21 21:18:09

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: Почему прошло тупое решение PIECE?

Формула Герона...
Интересно...


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#5 2005-11-22 08:25:59

ROBOT
Олімпієць
Звідки: Ялта
Зареєстрований: 2005-10-26
Повідомлень: 158

Re: Почему прошло тупое решение PIECE?

ПОПРОБУЙ тест
1 0 -1000 1 10000 1 9999 или аналогичные.
погрешность большая потому что складывается большое число с маленьким...


I have Delphi 7, BP 7.0, FP 1.0.4, Windows XP
Мои решения олимпиад на  Паскале: http://h0h0l.narod.ru/
Моя проверялка: http://www.proveryalka.narod.ru/
ICQ: 266367671

Поза форумом

 

#6 2005-11-23 08:45:07

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Почему прошло тупое решение PIECE?

Однако разрядной сетки хватает, чтобы хранить все цифры числа точно. до взятия корня. а после взятия корня число уже не большое, и разрядов 10-12 остается на знаки после точки. значит погрешность не такая уж большая wink

Поза форумом

 

#7 2005-11-23 08:47:44

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Почему прошло тупое решение PIECE?

единственное место для возникновения погрешности - это тут. p*(p-a)*(p-b)*(p-c)
но корень можно извлекать из первых двух множителей и из вторых отдельно. тогда все будет ок.

Поза форумом

 

#8 2005-11-23 10:13:32

ROBOT
Олімпієць
Звідки: Ялта
Зареєстрований: 2005-10-26
Повідомлень: 158

Re: Почему прошло тупое решение PIECE?

Погрешность в (p-a)*(p-c) (если a и b  намного больше с)
А если real то вообще дрянь...


I have Delphi 7, BP 7.0, FP 1.0.4, Windows XP
Мои решения олимпиад на  Паскале: http://h0h0l.narod.ru/
Моя проверялка: http://www.proveryalka.narod.ru/
ICQ: 266367671

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt