На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Ребята очень прошу помочь мне, вот код на программу 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.
Я даже в квадраты по сути не подношу помогите!!!!
Поза форумом
И тоже самое с задачей 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.
Поза форумом
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
Поза форумом
результаты он-лайн прверки этого кода
Тест Результат Время работы
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 сек.
Поза форумом
Спасибо выбило 20 из 20
Поза форумом
Кстати у меня вопрос по задаче Tangent.
"Програма читає з клавіатури шість цілих чисел (кожне не більше по модулю мільйона) через пропуск X1, Y1, R1, X2, Y2, R2 - відповідно координати центра і радіуси 1-го і 2-го кола. "
Вот цитата с условия. Я в своей программе поставил этим числам тип Longint ....но на последних трёх тестах она провалилась, я заменил на int64 и всё стало норм 20/20..
Так если числа по модулю не больше миллиона, разве лонгинта для этого не хватает?(
И вообще, гдето можно будет посмотреть какие именно вводные данные в тестах?)
Відредаговано Loginf (2009-11-29 21:04:26)
Поза форумом
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)
Поза форумом
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));
Поза форумом
Ясно, спасибо.
Поза форумом
Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...
Відредаговано alexo (2009-11-29 21:54:31)
Поза форумом
Здравствуйте, я новичек и участвую в олимпиаде первый раз, провалил все тесты из-за READLN вместо read. Я сомневаюсь, что мое письмо сейчас уже что то значит, но все же..
И еще подскажите, что значит Failed(bad data)
Поза форумом
Depool написав:
Здравствуйте, я новичек и участвую в олимпиаде первый раз, провалил все тесты из-за READLN вместо read. Я сомневаюсь, что мое письмо сейчас уже что то значит, но все же..
И еще подскажите, что значит Failed(bad data)
Рябята с первым туром вы конечно пролетели. Но виноваты в этом сами. Неужели нельзя было проверить задачу онлайн на тестовом примере.
Но у вас впереди второй тур, с большим количеством балов. И внимательно читайте условия, там подробно указывается как будут вводится данные.
Відредаговано pilya (2009-11-29 22:02:55)
Поза форумом
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)
Поза форумом
Ilya Porublyov написав:
Хоча на всяк випадок зачекаємо ще офіційної реакції від Жюри_Пасихов.
Можно узнать что это за официальная редакция. И что она может повлиять на текущую таблицу?
Поза форумом
Да спасибо...ну,как говориться, мы учимся на своих ошибках...Задачи я проверял, только прверялов сего на 1 тест и я все же не понял, что за проблема.
Поза форумом
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)
Поза форумом
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)
Поза форумом
alexo написав:
Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...
Побажаємо успіхів, как говорится.
На самом деле, проблема совсем не большая можно достаточно легко пройти в финал, решив по 2-3 задачи из следующих туров.
Поза форумом
yvanko написав:
alexo написав:
Здравствуйте! Я 1 раз участвую на олимпиаде, во всех прогах пишу "readln"а тут опа...не знал, что это нельзя делать, иначе тестер не сможет проверят...((( Просмотрев многие темы форума увидел, что ни в одной задаче нет READLN и решил сам написать READ и программы прошли тест... есть ли возможность переотправить проги на маил... ну, короче, подскажите, пожалуйста, решение этой большой проблемы...
Побажаємо успіхів, как говорится.
На самом деле, проблема совсем не большая можно достаточно легко пройти в финал, решив по 2-3 задачи из следующих туров.
Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.
Поза форумом
MAXXX написав:
Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.
В прошлом году была 200
2 Alexo
Тип координат должен быть int 64, а у вас integer.
Поза форумом
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.
Я даже в квадраты по сути не подношу помогите!!!!
Добавьте к коду комментарии, пожалуйста, а то не очень понятна суть решения.
Поза форумом
Проверьте задачу радарс, пожалуйста.
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)
Поза форумом
Darth Danil написав:
MAXXX написав:
Пожалуй, как минимум по 3. Обычно берут топ 70-90 участников и нижняя граница держится на уровне 300 баллов, или даже чуть выше, емнип.
В прошлом году была 200
Пардон,были глюки, не имеющие отношения к реальности=) Пересмотрел, граница и правда на уровне 200-225 несколько последних лет. Извиняюсь за ложную инфу)
Поза форумом
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.
Поза форумом
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, ведь все координаты могут быть отрицательными. В идеале лучше макс и мин присваивать первому элементу.
Поза форумом