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


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

Ви не зайшли.

#101 2009-11-29 20:37:31

MHz
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 4

Re: Обсуждение решений

Ребята очень прошу помочь мне, вот код на программу Newillusion тестировал сам очень много раз все было правильно подскажите плиз

Program Newillusion;
Const l = 10;
         m = 9;
         c = 4;
Matrix : array [1..m, 1..l] of Integer =
(
   (10,12,14,16,19,22,25,28,32,36),
   (40,44,48,52,57,62,67,72,78,84),
   (90,96,10,10,11,12,12,13,14,15),
   (16,16,17,18,19,20,21,22,23,24),
   (25,26,27,28,29,30,31,32,33,34),
   (36,37,38,39,40,42,43,44,46,47),
   (49,50,51,53,54,56,57,59,60,62),
   (64,65,67,68,70,72,73,75,77,79),
   (81,82,84,86,88,90,92,94,96,98)
);
Cycle : array [1..c] of Integer = (12,14,19,36);

Var n:Integer;
     K:longword;

  Procedure NinCycle (n,l: Integer);
  Var i: Int64;
  Begin
   i:= k-l;
   i:= i mod 4;
   Writeln(Cycle[i+1]);
  end;


  Function Found (Var n: Integer; l:Int64):Integer;
  Var first,Last : Integer;
  Begin
   First:= n div 10;
   Last:= n mod 10;
   If l=k then
     begin
      writeln(Matrix[First,Last+1]);
      Exit;
     end;
   If n = 12 then
    begin
     NinCycle(n,l);
     Exit;
    end;
   If n = 10 then
    begin
      writeln('10');
      Exit;
    end;
   Found (Matrix[First,Last+1], l+1);
  end;

Begin
  Read(n,K);
  Found (n,1);
End.

Я даже в квадраты по сути не подношу помогите!!!!

Поза форумом

 

#102 2009-11-29 20:40:36

MHz
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 4

Re: Обсуждение решений

И тоже самое с задачей Tangent посмотрите пожалуйста!!

Program tangent;
Var x1,y1,r1,x2,y2,r2: longint;
    summ,diference: Longint;
    way: extended;

Procedure OutPut (summ,diference: longint; way: real);
Begin
  If way = summ then writeln('3');
  If way = diference then writeln('1');
  If way < diference then writeln('0');
  If way > summ then writeln('4');
  If (way < summ) and (way > diference) then writeln('2');
end;

begin
  read(x1,y1,r1,x2,y2,r2);
  summ:=r1+r2;
  diference:=abs(r1-r2);
  way:=sqrt(sqr(x1-x2)+sqr(y1-y2));
  If (x1=x2) and (y1=y2) and (r1=r2)
     then writeln ('7')
     else OutPut(summ,diference,way)
end.

Поза форумом

 

#103 2009-11-29 20:43:04

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

MHz написав:

И тоже самое с задачей Tangent посмотрите пожалуйста!!

Program tangent;
Var x1,y1,r1,x2,y2,r2: longint;
    summ,diference: Longint;
    way: extended;

Procedure OutPut (summ,diference: longint; way: real);
Begin
  If way = summ then writeln('3');
  If way = diference then writeln('1');
  If way < diference then writeln('0');
  If way > summ then writeln('4');
  If (way < summ) and (way > diference) then writeln('2');
end;

begin
  read(x1,y1,r1,x2,y2,r2);
  summ:=r1+r2;
  diference:=abs(r1-r2);
  way:=sqrt(sqr(x1-x2)+sqr(y1-y2));
  If (x1=x2) and (y1=y2) and (r1=r2)
     then writeln ('7')
     else OutPut(summ,diference,way)
end.

Longint замени на int64

Поза форумом

 

#104 2009-11-29 20:46:21

Жюри_Пасихов
Адміністратор
Зареєстрований: 2009-11-08
Повідомлень: 439

Re: Обсуждение решений

результаты он-лайн прверки этого кода



Тест Результат Время работы
00 PASSED (+0) 0.01 сек.
01 PASSED (+1) 0.01 сек.
02 PASSED (+1) 0.01 сек.
03 PASSED (+1) 0.01 сек.
04 PASSED (+1) 0.01 сек.
05 FAILED (Wrong Answer) 0.01 сек.
06 FAILED (Wrong Answer) 0.01 сек.
07 FAILED (Wrong Answer) 0.01 сек.
08 PASSED (+1) 0.01 сек.
09 FAILED (Wrong Answer) 0.01 сек.
10 FAILED (Wrong Answer) 0.01 сек.
11 FAILED (Wrong Answer) 0.02 сек.
12 FAILED (Wrong Answer) 0.02 сек.
13 PASSED (+1) 0.01 сек.
14 FAILED (Wrong Answer) 0.01 сек.
15 PASSED (+1) 0.01 сек.
16 PASSED (+1) 0.01 сек.
17 FAILED (Wrong Answer) 0.01 сек.
18 FAILED (Wrong Answer) 0.01 сек.
19 FAILED (Wrong Answer) 0.01 сек.
20 FAILED (Wrong Answer) 0.01 сек.

Поза форумом

 

#105 2009-11-29 20:47:48

MHz
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 4

Re: Обсуждение решений

Спасибо выбило 20 из 20

Поза форумом

 

#106 2009-11-29 21:02:57

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

Кстати у меня вопрос по задаче Tangent.
"Програма читає з клавіатури шість цілих чисел (кожне не більше по модулю мільйона) через пропуск X1, Y1, R1, X2, Y2, R2 - відповідно координати центра і радіуси 1-го і 2-го кола. "
Вот цитата с условия. Я в своей программе поставил этим числам тип Longint ....но на последних трёх тестах она провалилась, я заменил на int64 и всё стало норм 20/20..
Так если числа по модулю не больше миллиона, разве лонгинта для этого не хватает?(


И вообще, гдето можно будет посмотреть какие именно вводные данные в тестах?)

Відредаговано Loginf (2009-11-29 21:04:26)

Поза форумом

 

#107 2009-11-29 21:12:30

Ilya Porublyov
журі
Зареєстрований: 2005-10-27
Повідомлень: 130

Re: Обсуждение решений

Loginf написав:

Я в своей программе поставил этим числам тип Longint ....но на последних трёх тестах она провалилась, я заменил на int64 и всё стало норм 20/20..
Так если числа по модулю не больше миллиона, разве лонгинта для этого не хватает?(

Це не завжди логічно, але деякі арифметичні дії (в т.ч. і множення, і піднесення до квадрату через sqr) виконуються в тому типі, в якому задані аргументи. Навіть при коді
sqr_x : extended;
x : integer;
............
sqr_x := x*x;
............

x*x спочатку порахується у типі integer, а потім уже буде перетворено до extended.


Наскільки знаю, цього року планується так само як і у попередніх -- дивитися вміст тестів можна, але тільки після кінця 4-го туру.

Відредаговано Ilya Porublyov (2009-11-29 21:14:27)

Поза форумом

 

#108 2009-11-29 21:20:07

LeonID
Новий користувач
Зареєстрований: 2008-12-09
Повідомлень: 160

Re: Обсуждение решений

Loginf написав:

Кстати у меня вопрос по задаче Tangent.
"Програма читає з клавіатури шість цілих чисел (кожне не більше по модулю мільйона) через пропуск X1, Y1, R1, X2, Y2, R2 - відповідно координати центра і радіуси 1-го і 2-го кола. "
Вот цитата с условия. Я в своей программе поставил этим числам тип Longint ....но на последних трёх тестах она провалилась, я заменил на int64 и всё стало норм 20/20..
Так если числа по модулю не больше миллиона, разве лонгинта для этого не хватает?(


И вообще, гдето можно будет посмотреть какие именно вводные данные в тестах?)

Напевно проблема тут:
way:=sqrt(sqr(x1-x2)+sqr(y1-y2));

sqr(1000000) не входить в longint

я цю проблему вирішив ось так:

var x1,y1,x2,y2,r1,r2:longint;
    vidstmizcentr,x11,y11,x12,y12:extended;
begin
read(x1,y1,r1,x2,y2,r2);
x11:=x1;y11:=y1;x12:=x2;y12:=y2;
vidstmizcentr:=sqrt(sqr(x12-x11)+sqr(y12-y11));

Поза форумом

 

#109 2009-11-29 21:25:12

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

Ясно, спасибо.

Поза форумом

 

#110 2009-11-29 21:54:00

alexo
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 18

Re: Обсуждение решений

Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...

Відредаговано alexo (2009-11-29 21:54:31)

Поза форумом

 

#111 2009-11-29 21:56:06

Depool
Новий користувач
Звідки: Дніпропетровськ
Зареєстрований: 2009-11-29
Повідомлень: 15

Re: Обсуждение решений

Здравствуйте, я новичек и участвую в олимпиаде первый раз, провалил все тесты из-за READLN вместо read. Я сомневаюсь, что мое письмо сейчас уже что то значит, но все же..
И еще подскажите, что значит Failed(bad data)


Всегда выбирайте самый трудный путь - на нем вы не встретите конкурентов

Поза форумом

 

#112 2009-11-29 22:00:35

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Depool написав:

Здравствуйте, я новичек и участвую в олимпиаде первый раз, провалил все тесты из-за READLN вместо read. Я сомневаюсь, что мое письмо сейчас уже что то значит, но все же..
И еще подскажите, что значит Failed(bad data)

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

Відредаговано pilya (2009-11-29 22:02:55)

Поза форумом

 

#113 2009-11-29 22:14:13

Ilya Porublyov
журі
Зареєстрований: 2005-10-27
Повідомлень: 130

Re: Обсуждение решений

2 Depool, alexo

Наскільки я розумію, це все-таки буде сприйнято за вашу помилку і можливості перездати не буде. Вам була надана можливість багатократно виконувати online-перевірку на тесті з умови, і я не_уявляю, як програма з саме такими проблемами могла_б успішно проходити той тест. До того ж, це питання вже обговорювалося на форумі, ДО кінця туру (пости №№ 30--32 на сторінці http://forum.olymp.vinnica.ua/viewtopic … 84&p=2 ). Крім того, ви мали можливість пробувати здавати задачі минулих років, задачі тренувального туру, і т.д., а також мали можливість знайти правильно оформлені розв'язки тих задач.

Хоча на всяк випадок зачекаємо ще офіційної реакції від Жюри_Пасихов.

На щастя, відсутність балів за перший тур абсолютно не перешкоджає писати 2-й і/або 3-й (а якщо вистачить балів за сумою 2-го і 3-го, то й 4-ий).

BAD DATA означає, що при спробі обробити результати вашої програми перевірялка не дійшла до перевірки по суті, спіткнувшися на неспівпаданні форматів. Наприклад, коли відповідь має бути
3
а замість неї написано
otvet is 3.

Також буває, що BAD DATA виводиться там, де програма злетіла з помилкою часу виконання.

Відредаговано Ilya Porublyov (2009-11-29 22:18:18)

Поза форумом

 

#114 2009-11-29 22:26:42

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Ilya Porublyov написав:

Хоча на всяк випадок зачекаємо ще офіційної реакції від Жюри_Пасихов.

Можно узнать что это за официальная редакция. И что она может повлиять на текущую таблицу?

Поза форумом

 

#115 2009-11-29 22:29:54

alexo
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 18

Re: Обсуждение решений

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

Поза форумом

 

#116 2009-11-29 22:34:02

alexo
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 18

Re: Обсуждение решений

Loginf написав:

MHz написав:

И тоже самое с задачей Tangent посмотрите пожалуйста!!

Program tangent;
Var x1,y1,r1,x2,y2,r2: longint;
    summ,diference: Longint;
    way: extended;

Procedure OutPut (summ,diference: longint; way: real);
Begin
  If way = summ then writeln('3');
  If way = diference then writeln('1');
  If way < diference then writeln('0');
  If way > summ then writeln('4');
  If (way < summ) and (way > diference) then writeln('2');
end;

begin
  read(x1,y1,r1,x2,y2,r2);
  summ:=r1+r2;
  diference:=abs(r1-r2);
  way:=sqrt(sqr(x1-x2)+sqr(y1-y2));
  If (x1=x2) and (y1=y2) and (r1=r2)
     then writeln ('7')
     else OutPut(summ,diference,way)
end.

Longint замени на int64

Ще мені не зрозуміла помилка "wrong answer"(неправильна відповідь), ось мій код, він ідентичний цитованому:

Код:

var  x1,x2,y1,y2,c:integer;
r1,r2,rmax,rmin:real;
begin
read(x1,y1) ;
read(x2,y2)   ;
read(r1);
read(r2);
c:=0;
if r1<r2 then  begin
rmax:=r2   ;
rmin:=r1    ;
end
else
begin
rmax:=r1   ;
rmin:=r2
end;
if sqrt(sqr(x1-x2)+sqr(y1-y2))>(r1+r2) then
c:=4;
if (sqrt(sqr(x1-x2)+sqr(y1-y2))>rmax-rmin)and((x1-x2)*(x1-x2)+(y1-y2)*(y1+y2)<rmax+rmin) then
c:=2;
if sqrt(sqr(x1-x2)+sqr(y1-y2))=(r1+r2)then
c:=3;
if (x1=x2)and(y1=y2)and(r1=r2) then
c:=7;
if sqrt(sqr(x1-x2)+sqr(y1-y2))<= sqrt(sqr(rmax-rmin))then
c:=0;
if sqrt(sqr(x1-x2)+sqr(y1-y2))= rmax-rmin then
c:=1;

write(c);
end.

НЕВЖЕ ЦЕ ПОМИЛКА З ТИПОМ ДАНИХ??
І все ж таки, я багато зрозуміл та ці програми були мені уроком паскалю та правилом оформлення задач, дякую.

Відредаговано alexo (2009-11-29 22:38:56)

Поза форумом

 

#117 2009-11-29 23:13:57

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

Re: Обсуждение решений

alexo написав:

Код:

read(x1,y1) ;
read(x2,y2)   ;
read(r1);
read(r2);

неправильный порядок чтения данных - необходимо было бы сделать

Код:

read(x1,y1);
read(r1);
read(x2,y2);
read(r2);

или

Код:

read(x1,y1,r1,x2,y2,r2);

Відредаговано Слава (2009-11-29 23:14:57)


skype slava_812

Поза форумом

 

#118 2009-11-30 00:00:34

yvanko
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 9

Re: Обсуждение решений

alexo написав:

Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...

Побажаємо успіхів, как говорится.

На самом деле, проблема совсем не большая можно достаточно легко пройти в финал, решив по 2-3 задачи из следующих туров.

Поза форумом

 

#119 2009-11-30 00:03:52

MAXXX
Новий користувач
Звідки: м. Київ
Зареєстрований: 2006-10-17
Повідомлень: 132

Re: Обсуждение решений

yvanko написав:

alexo написав:

Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...

Побажаємо успіхів, как говорится.

На самом деле, проблема совсем не большая можно достаточно легко пройти в финал, решив по 2-3 задачи из следующих туров.

Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.


ICQ 426287475

Поза форумом

 

#120 2009-11-30 01:21:38

Darth Danil
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 7

Re: Обсуждение решений

MAXXX написав:

Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.

В прошлом году была 200

2 Alexo
Тип координат должен быть int 64, а у вас integer.


Нажмите любую клавишу, чтобы продолжить, или любую другую, чтобы выйти

Поза форумом

 

#121 2009-11-30 01:23:32

Darth Danil
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 7

Re: Обсуждение решений

MHz написав:

Ребята очень прошу помочь мне, вот код на программу Newillusion тестировал сам очень много раз все было правильно подскажите плиз

Program Newillusion;
Const l = 10;
         m = 9;
         c = 4;
Matrix : array [1..m, 1..l] of Integer =
(
   (10,12,14,16,19,22,25,28,32,36),
   (40,44,48,52,57,62,67,72,78,84),
   (90,96,10,10,11,12,12,13,14,15),
   (16,16,17,18,19,20,21,22,23,24),
   (25,26,27,28,29,30,31,32,33,34),
   (36,37,38,39,40,42,43,44,46,47),
   (49,50,51,53,54,56,57,59,60,62),
   (64,65,67,68,70,72,73,75,77,79),
   (81,82,84,86,88,90,92,94,96,98)
);
Cycle : array [1..c] of Integer = (12,14,19,36);

Var n:Integer;
     K:longword;

  Procedure NinCycle (n,l: Integer);
  Var i: Int64;
  Begin
   i:= k-l;
   i:= i mod 4;
   Writeln(Cycle[i+1]);
  end;


  Function Found (Var n: Integer; l:Int64):Integer;
  Var first,Last : Integer;
  Begin
   First:= n div 10;
   Last:= n mod 10;
   If l=k then
     begin
      writeln(Matrix[First,Last+1]);
      Exit;
     end;
   If n = 12 then
    begin
     NinCycle(n,l);
     Exit;
    end;
   If n = 10 then
    begin
      writeln('10');
      Exit;
    end;
   Found (Matrix[First,Last+1], l+1);
  end;

Begin
  Read(n,K);
  Found (n,1);
End.

Я даже в квадраты по сути не подношу помогите!!!!

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


Нажмите любую клавишу, чтобы продолжить, или любую другую, чтобы выйти

Поза форумом

 

#122 2009-11-30 01:34:06

Darth Danil
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 7

Re: Обсуждение решений

Проверьте задачу радарс, пожалуйста.

Код:

program radars;
var i,n:longint;
    a:array[1..100000] of longint;
    ans,max,min,sr:longint;
begin
   read(n);
   max:=0;
   min:=1000000;
   for i:=1 to n do {нахождение максимального и минимального элементов}
    begin
       read(a[i]);
       if max<a[i] then max:=a[i] else
        if min>a[i] then min:=a[i];
    end;
   sr:=1000000;
   for i:=1 to n do {Нахождение элемента, минимально отличающегося от среднего максимального и минимального}
    if abs(2*a[i]-(min+max))<sr then begin sr:=abs(2*a[i]-(min+max)); ans:=a[i]; end; 
   ans:=(max-(ans))*((ans)-min); {собственно, расчет "мощности"}
   writeln (ans);
end.

Набрано 14 баллов.
Зарание спасибо.

Відредаговано Darth Danil (2009-11-30 01:40:45)


Нажмите любую клавишу, чтобы продолжить, или любую другую, чтобы выйти

Поза форумом

 

#123 2009-11-30 07:27:11

MAXXX
Новий користувач
Звідки: м. Київ
Зареєстрований: 2006-10-17
Повідомлень: 132

Re: Обсуждение решений

Darth Danil написав:

MAXXX написав:

Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.

В прошлом году была 200

Пардон,были глюки, не имеющие отношения к реальности=) Пересмотрел, граница и правда на уровне 200-225 несколько последних лет. Извиняюсь за ложную инфу)


ICQ 426287475

Поза форумом

 

#124 2009-11-30 08:37:39

LeonID
Новий користувач
Зареєстрований: 2008-12-09
Повідомлень: 160

Re: Обсуждение решений

Darth Danil написав:

Проверьте задачу радарс, пожалуйста.

Код:

program radars;
var i,n:longint;
    a:array[1..100000] of longint;
    ans,max,min,sr:longint;
begin
   read(n);
   max:=0;
   min:=1000000;
   for i:=1 to n do {нахождение максимального и минимального элементов}
    begin
       read(a[i]);
       if max<a[i] then max:=a[i] else
        if min>a[i] then min:=a[i];
    end;
   sr:=1000000;
   for i:=1 to n do {Нахождение элемента, минимально отличающегося от среднего максимального и минимального}
    if abs(2*a[i]-(min+max))<sr then begin sr:=abs(2*a[i]-(min+max)); ans:=a[i]; end; 
   ans:=(max-(ans))*((ans)-min); {собственно, расчет "мощности"}
   writeln (ans);
end.

Набрано 14 баллов.
Зарание спасибо.

Очевидно програма не може осилити множення 1000000*1000000.

Поза форумом

 

#125 2009-11-30 14:39:36

n1ce
Новий користувач
Зареєстрований: 2009-11-28
Повідомлень: 19

Re: Обсуждение решений

Darth Danil написав:

Проверьте задачу радарс, пожалуйста.

Код:

program radars;
var i,n:longint;
    a:array[1..100000] of longint;
    ans,max,min,sr:longint;
begin
   read(n);
   max:=0;
   min:=1000000;
   for i:=1 to n do {нахождение максимального и минимального элементов}
    begin
       read(a[i]);
       if max<a[i] then max:=a[i] else
        if min>a[i] then min:=a[i];
    end;
   sr:=1000000;
   for i:=1 to n do {Нахождение элемента, минимально отличающегося от среднего максимального и минимального}
    if abs(2*a[i]-(min+max))<sr then begin sr:=abs(2*a[i]-(min+max)); ans:=a[i]; end; 
   ans:=(max-(ans))*((ans)-min); {собственно, расчет "мощности"}
   writeln (ans);
end.

Набрано 14 баллов.
Зарание спасибо.

к тому же max нужно присваивать -1000000, ведь все координаты могут быть отрицательными. В идеале лучше макс и мин присваивать первому элементу.

Поза форумом

 

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

Powered by Likt
© Copyright 2002–2009 Likt