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


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

Ви не зайшли.

#1 2012-11-17 11:28:11

tucnak
Новий користувач
Зареєстрований: 2012-11-17
Повідомлень: 7

Fazenda Проблема 8 балів

Добрий день, шановне журі!

Прошу надіслати або опублікувати тести до завдання першого туру Fazenda.

Маю підозру, що неправильну відповідь отримано у результаті використання типу дійсної змінної, на який відведено більше пам'яті, ніж на тип змінної, використаний в авторському розв'язанні.

Прошу розвіяти мої сумніви.

З повагою, Ілля Ковалевський (Илья Ковалевский)

Поза форумом

 

#2 2012-11-17 11:51:08

Alex_Bulany
Новий користувач
Зареєстрований: 2009-01-26
Повідомлень: 17

Re: Fazenda Проблема 8 балів

Абсолютно очікувана ситуація, коли в умові задачі вимагається "виводить на екран через пропуск без заокруглення"
У нас всі учні, які писали мовою Паскаль отримали по 20 балів, а С/С++ по 8.
Погодьтесь спокійно із цим рішенням журі, і набирайте бали у наступних турах. Навряд чи 1 бал у четвертому турі буде багато важити.
Бажаю успіхів!

Поза форумом

 

#3 2012-11-17 12:10:46

adamant
Новий користувач
Звідки: Запорожье
Зареєстрований: 2012-10-17
Повідомлень: 141

Re: Fazenda Проблема 8 балів

Лично у меня на С++ прошло, возможно, благодаря использованию типа long double и вот этим двум строкам:

Код:

cout.setf(ios::scientific);
cout.precision(11);

Которые задавали формат вывода научный и задавали точность немного большей, чем того было необходимо (иначе выводило бы с округлением).

Відредаговано adamant (2012-11-17 12:14:58)

Поза форумом

 

#4 2012-11-17 12:10:51

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

Re: Fazenda Проблема 8 балів

"без округления"="максимальная точность" (при проверке   0.000001). А господа "сишники" форматируют вывод....вот точность и пропадает....

Поза форумом

 

#5 2012-11-17 12:12:26

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

Re: Fazenda Проблема 8 балів

adamant написав:

Лично у меня на С++ прошло, возможно, благодаря использованию типа long double и вот этим двум строкам:

Код:

cout.setf(ios::scientific);
cout.precision(11);

Которые задавали формат вывода научный и задавало точность немного большей, чем того было необходимо (иначе выводило бы с округлением).

И правильно делали.

Поза форумом

 

#6 2012-11-17 12:14:45

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

Re: Fazenda Проблема 8 балів

tucnak написав:

Добрий день, шановне журі!

Прошу надіслати або опублікувати тести до завдання першого туру Fazenda.

За традицією олімпіад NetOI всі тести будуть (разом із розв"язками учасників та журі) доступні для завантаження ПІСЛЯ завершення олімпіади

Поза форумом

 

#7 2012-11-17 12:28:10

Alex_Bulany
Новий користувач
Зареєстрований: 2009-01-26
Повідомлень: 17

Re: Fazenda Проблема 8 балів

Жюри_Пасихов написав:

"без округления"="максимальная точность" (при проверке   0.000001). А господа "сишники" форматируют вывод....вот точность и пропадает....

Не зовсім так. Проблема у тому, що не було форматування виведення, як у adamant: cout.precision(11);
За замовченням  у CNU C++ точність виведення нижче, ніж вимагали Ви.

Але прохання до Юрія Яковича. Не сприймайте, мої повідомлення, як критику. Я просто хочу допомогти
олімпіадникам зрозуміти, де їх можуть чекати "підводні камені".
Дуже вдячний за задачі першого туру - дуже корисні!
З повагою, Alex_Bulany.

Поза форумом

 

#8 2012-11-17 12:30:41

tucnak
Новий користувач
Зареєстрований: 2012-11-17
Повідомлень: 7

Re: Fazenda Проблема 8 балів

Шановне журі!

За традицією олімпіад NetOI всі тести будуть (разом із розв'язками учасників та журі) доступні для завантаження після завершення олімпіади. Зауважте: це суперечить традиціям проведення IV етапу олімпіади, на якому цю інформацію повідомляють після туру (можливо, крім власне кодів програм членів журі). А призом NetOI є саме участь у IV етапі...

Відсутність процедури апеляції при проведенні NetOI не означає, що таку інформацію (зміст тестів) неможна поширювати.

Маю підозру, що не в одного учасника, що використовував мову програмування C, знято бали за надлишкову точність у задачі FAZENDA. Зміст тестів потрібно "розкрити" хоча б для того, щоб учасники змогли з'ясувати причину санкцій й уникнули у майбутньому аналогічних ситуацій. Обчислення можна провести з довільною точністю, використовуючи, наприклад, Reduce.

Зростання рівня кваліфікації учасників - це найголовніше завдання NetOI. І щоб виконати це завдання, тестові файли потрібно опублікувати.

Поза форумом

 

#9 2012-11-17 13:00:18

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

Re: Fazenda Проблема 8 балів

Традиції IV eтапу у різний час різні... на моїй пам'яті бувало й так, що тести залишалися недоступними для учасників взагалі. NetOI - довготремінова олімпіада, і дійсно має навчальну мету. Але навчання навряд чи зводиться до "латання" власного розв"язку "під комплект" тих чи інших тестів. Та й он-лайн перевірка існує і постійно доступна. Виправляйте помилки, доводьте до повного балу. Що стосується задачі FAZENDA, то бали "зняті" не за надлишкову, а за НЕДОСТАТНЮ точність. Наведу фрагмент перевіряючого модуля (Python, сішник код зрозуміє, якщо й мова не знайома), із якого все очевидно. А тести вам зараз ні до чого... 

eps = 0.00001
   
    def check(self, dat, chk, sol):
        if (abs(sol.result[0] - chk.result[0]) > self.eps)or(abs(sol.result[1] - chk.result[1]) > self.eps):
        self.break_WA()
    self.break_OK()

Поза форумом

 

#10 2012-11-17 13:49:09

Alex_Bulany
Новий користувач
Зареєстрований: 2009-01-26
Повідомлень: 17

Re: Fazenda Проблема 8 балів

tucnak написав:

Зростання рівня кваліфікації учасників - це найголовніше завдання NetOI.

Шановний Ілля!
Я згоден з Вами.
Які висновки можна зробити з тієї ситуації?
По- перше, коли автори задачі не вказують точності відповіді - це зона ризику для Вас.
Якщо це відбувається на очній олімпіаді, то обов'язково потрібно ставити запитання.
Якщо відповіді немає, то потрібно розбиратися самому. За правилами, у системі перевірки використовуються два компілятори.
У FreePascal  типи real,double виводяться з 15 значащими цифрами, а extended з 17.
У GNU C всі типи (float, double, long double) виводяться по замовченню з 6 значащими цифрами, і тому щонайменше 20 учасників отримали по 8 балів або нижче.
Тому, працюючі у С/С++ виведення потрібно форматувати до рівня Pascal. Наприклад, << setprecision(15).
Розв'язок "без заокруглення"  отримує 8 балів,
з заокругленням << setprecision(7) - 17 балів, << setprecision(8) 19 балів, якщо більше, то повний бал.
Але гарантію Вам може дати тільки << setprecision(15)
Бажаю, що б у подальшому, Ваш досвід дав би Вам великі прибуткі. І ціна, яку Ви заплатили сьогодні,  не така вже й велика.
Бажаю успіхів.

Поза форумом

 

#11 2012-11-17 14:19:23

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

Re: Fazenda Проблема 8 балів

Alex_Bulany написав:

За замовченням  у CNU C++ точність виведення нижче, ніж вимагали Ви.
З повагою, Alex_Bulany.

Так. І це зроблено свідомо. Єдине, за що сам себе критикую - це те, що в умові не сказав традиційного для нас "результат виводьте із максимально можливою точністю", саме так ми писали завжди в  технічних умовах до задач з дійсною відповіддю. На мій погляд, вимога типу "із такою-то точністю" породжує бажання  розв"язувати задачу інколи ... на з того боку.  Дякую вам за корисні коментарі і зауваження.

Поза форумом

 

#12 2012-11-17 18:11:27

IskanderUA
Новий користувач
Зареєстрований: 2012-07-07
Повідомлень: 9

Re: Fazenda Проблема 8 балів

Жюри_Пасихов написав:

Alex_Bulany написав:

За замовченням  у CNU C++ точність виведення нижче, ніж вимагали Ви.
З повагою, Alex_Bulany.

Так. І це зроблено свідомо. Єдине, за що сам себе критикую - це те, що в умові не сказав традиційного для нас "результат виводьте із максимально можливою точністю", саме так ми писали завжди в  технічних умовах до задач з дійсною відповіддю. На мій погляд, вимога типу "із такою-то точністю" породжує бажання  розв"язувати задачу інколи ... на з того боку.  Дякую вам за корисні коментарі і зауваження.

Особисто мені здається, що учасник олімпіади менше має звертати уваги на особливості виводу відповіді, аніж на спосіб знаходження цієї відповіді.

Поза форумом

 

#13 2012-11-17 22:13:32

tucnak
Новий користувач
Зареєстрований: 2012-11-17
Повідомлень: 7

Re: Fazenda Проблема 8 балів

IskanderUA написав:

Жюри_Пасихов написав:

Alex_Bulany написав:

За замовченням  у CNU C++ точність виведення нижче, ніж вимагали Ви.
З повагою, Alex_Bulany.

Так. І це зроблено свідомо. Єдине, за що сам себе критикую - це те, що в умові не сказав традиційного для нас "результат виводьте із максимально можливою точністю", саме так ми писали завжди в  технічних умовах до задач з дійсною відповіддю. На мій погляд, вимога типу "із такою-то точністю" породжує бажання  розв"язувати задачу інколи ... на з того боку.  Дякую вам за корисні коментарі і зауваження.

Особисто мені здається, що учасник олімпіади менше має звертати уваги на особливості виводу відповіді, аніж на спосіб знаходження цієї відповіді.

Тим паче, мені не зрозуміло чому в умові задачі не було вказано точність, потрібну для виводу результату. Цитую технічні умови:

Програма Fazenda читає з клавіатури через пропуск висоти трикутника - дійсні числа h1, h2, h3 (1<=h1, h2, h3<=10000) та виводить на екран через пропуск без заокруглення площу і периметр трикутника. Якщо трикутника не існує, вивести через пропуск двічі 0.

1. printf("%E %E\n", s, p); - послідовно виводить через прогалину два числа типу double без заокруглення (що відповідає умові задачі)
2. printf("%.10E %.10E\n", s, p); - виконує ті самі дії, що й код з п.1, проте з точністю 10 знаків після коми.

Другий варіант проходить усі тести (на відміну від першого), проте в умові задачі явно не вказано, що потрібно виводити з максимальною точністю чисел. Також не було сказано, що максимальна точність це > 6 знаків після коми.

Прошу вказати на помилкову ланку в логічному ланцюжці моїх роздумів.

З повагою, Ковалевський Ілля.

Поза форумом

 

#14 2012-11-17 22:21:22

Жюри_Непомнящий
Журі
Зареєстрований: 2005-11-03
Повідомлень: 151

Re: Fazenda Проблема 8 балів

Помилкова ланка в тому, що
1. printf("%E %E\n", s, p); - послідовно виводить через прогалину два числа типу double без заокруглення (що відповідає умові задачі)
Ця команда насправді заокруглює число до 6 знаків, за що ви і недобираєте 12 балів.

Поза форумом

 

#15 2012-11-17 22:34:27

tucnak
Новий користувач
Зареєстрований: 2012-11-17
Повідомлень: 7

Re: Fazenda Проблема 8 балів

Жюри_Непомнящий написав:

Помилкова ланка в тому, що
1. printf("%E %E\n", s, p); - послідовно виводить через прогалину два числа типу double без заокруглення (що відповідає умові задачі)
Ця команда насправді заокруглює число до 6 знаків, за що ви і недобираєте 12 балів.

Пане Непомнящий, красно дякую за швидку відповідь!

В такому разі мені не зрозуміло, чому в умові задачі не було сказано нічого про потрібну "точність" виводу. В розрізі використаної мною мови програмування, округлення до 11 знаків після коми - також заокруглення. В даному випадку, ті учасники олімпіади, що округлили на більше число - отримали більше балів?

Таким чином, вказані мною розв'язки:

1. printf("%E %E\n", s, p);
2. printf("%.10E %.10E\n", s, p);

однаково порушують умову задачі (..прогалину два числа без заокруглення..), а зокрема - технічні умови. Проте розв'язок №2 - проходить 100% тестів, що не можна сказати про розв'язок №1.

З повагою, Ілля Ковалевський.

Відредаговано tucnak (2012-11-17 22:47:04)

Поза форумом

 

#16 2012-11-18 01:02:28

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

Re: Fazenda Проблема 8 балів

Дискусія пішла по другому колу. Позиції, здається, зрозумілі. Журі приносить вибачення за те, що в технічних умовах замість слів "з максимально можливою точністю" були слова "без заокруглення". Відсутність уточнюючих питань під час 3 тижнів туру давала нам можливість вважати, що в умові все зрозуміло.  Учасники, що прикро втратили бали на цій, насправді дуже простій задачі, вважають, що їх ввели в оману, вони нічого не заокруглювали, заокруглював компілятор, а вони просто обрали формат виведення, що заокруглює "грубіше", ніж інші....Таких "постраждалих" - 17 , роз'вязків на С/С++  більше 60, у решти проблеми не виникли. Вони зрозуміли, що "не заокруглювати результат при виведенні "  означає вивести максимальну можливу для даного компілятора (і, зрозуміло, машинного представлення) кількість вірних знаків після коми...
Провести повторну перевірку з меньшою точністю - не питання, але чи справедливо це буде по відношенню до тих, хто "запропонував" роботу більш точну відповідь?

Поза форумом

 

#17 2012-11-18 07:32:19

LVV
Олімпієць
Звідки: Олешки
Зареєстрований: 2010-11-19
Повідомлень: 360
Вебсайт

Re: Fazenda Проблема 8 балів

IskanderUA написав:

Особисто мені здається, що учасник олімпіади менше має звертати уваги на особливості виводу відповіді, аніж на спосіб знаходження цієї відповіді.

Згоден на 100%. Тим більше, що така точність, яка вимагається в задачі є абсурдною з фізичної точки зору, бо це вже розміри квантової фізики. smile
Єдине, що виправдовує такий підхід - це особливості конкретної системи автоматизованої перевірки результатів обчислень (в чому я мало розуміюсь). sad



Жюри_Пасихов написав:

Журі приносить вибачення... Відсутність уточнюючих питань під час 3 тижнів туру давала нам можливість вважати, що в умові все зрозуміло...

"Відсутність уточнюючих питань"???
Та була ціла дискусія з цього приводу, в якій автор задачі, здається, участі не приймав.

Цитую деякі уривки з гілки Fazenda:

Cz написав:

Що означає виводити відповіді без заокруглення?
Яка максимальна кількість знаків має відображатись, якщо число - нескінченний дріб?
Чи обов'язково відповіді мають бути в експоненційній формі?

LVV написав:

У мене замість авторського
6.0000000000Е+02    1.2000000000Е+02
виводить 600 120 та тест все одно пройшов нормально. Хоч питання Cz мене теж цікавлять.

mariyka_mariyka написав:

...маю відповідь  6.0000000000000Е+002  1.2000000000000Е+002
тести не проходять... будь ласка, підкажіть, що я роблю не так?...

LVV написав:

Вопрос не в том, как вывести экспоненциальную (научную, стандртную) запись числа с определённым количеством десятичных знаков... Вопрос в том, принципиально ли это для данной задачи, или нет?....

mariyka_mariyka написав:

здається, проблема в тому, що 6.0000000000000Е+002 це не авторське 6.0000000000Е+02

victor18 написав:

В умові сказано, виводити числа без заокруглення. В авторському прикладі числа цілі, тому відповіді 600 120, 600.000 120, 6.0000000000Е+02    1.2000000000Е+02, 6.0000000000000Е+002  1.2000000000000Е+002 рівносильні і повинні проходити онлайн-перевірку. Я маю на увазі, що може помилка в чомусь іншому.

Проводити, чи не проводити повторну перевірку - це на розсуд журі. А от якось зобов'язати авторів задач офіційно відповідати на питання учсників стосовно умови задачі було б непогано.

Відредаговано LVV (2012-11-18 08:18:58)


Вік живи - вік навчайся.

Поза форумом

 

#18 2012-11-18 08:55:08

tucnak
Новий користувач
Зареєстрований: 2012-11-17
Повідомлень: 7

Re: Fazenda Проблема 8 балів

Вони зрозуміли, що "не заокруглювати результат при виведенні "  означає вивести максимальну можливу для даного компілятора (і, зрозуміло, машинного представлення) кількість вірних знаків після коми...

Одні зрозуміли, інші не зрозуміли. Це, як мінімум не серйозно.

Провести повторну перевірку з меньшою точністю - не питання, але чи справедливо це буде по відношенню до тих, хто "запропонував" роботу більш точну відповідь?

Повторюся. Як я писав раніше - "заокруглити до 11 знаків після коми - також заокруглити". Умова була однаково "неточна" по відношенню до усіх учасників олімпіади. І ще раз повторюся, більше балів отримали ті, кто "згогадався запропонувати" перевіряючій машині більш точну відповідь. В даному випадку ми маємо, як мінімум, неточну умову, та здогадки 43 учасників олімпіади. Тому, я думаю, що таки треба провести повторну перевірку з меншою точністю. А що вирішить робити журі, це, як кажуть, вже їх справа.

З повагою, Ковалевський Ілля!

Поза форумом

 

#19 2012-11-18 11:14:32

Lorderot
Новий користувач
Звідки: Чернівці
Зареєстрований: 2012-11-15
Повідомлень: 22
Вебсайт

Re: Fazenda Проблема 8 балів

tucnak написав:

Тому, я думаю, що таки треба провести повторну перевірку з меншою точністю. !

Це буде некоректно по відношеню тих хто зрозуміли.

Поза форумом

 

#20 2012-11-18 15:00:20

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

Re: Fazenda Проблема 8 балів

Lorderot написав:

tucnak написав:

Тому, я думаю, що таки треба провести повторну перевірку з меншою точністю. !

Це буде некоректно по відношеню тих хто зрозуміли.

Так буває, коли умова сформульована не зовсім точно. Тоді у частини учасників хід думок співпадає з ходом думок автора, а у частини - ні, і, відповідно, хтось залишається ображеним. Або ті, хто вірно розв'язали задачу, яку самі придумали, бо не зрозуміли автора, або, якщо першим зарахують розв'язки, ораженими будуть ті екстрасенси, які зрозуміли автора. У більшості ж випадків з цією задачею, взагалі, співпав навіть не хід думок, а мова, якою писався розв'язок.

Все-таки, варто було б чітко написати, з якою точністю має бути виведена відповідь. Бо "без заокруглення", та й навіть "з максимально можливою точністю" може мати купу різних інтерпретацій. Як писали вище, у С++, наприклад long double може і 18 знаків після крапки зберігати. А от до фрази "з точністю 6, 9, 12(потрібне підкреслити) знаків після коми" причепитися буде важко.


Але тут питання чисто символічне. Ці 12 балів все одно нікого не врятують. У 4 турі вони стануть 1 балом, а для виходу в четвертий їх можна буде без проблем "відбити" у наступних двох турах. Там, на щастя, розігрується 500 балів, тож "назбирати" 12 буде нескладно.

Відредаговано Dim_ov (2012-11-18 15:01:30)

Поза форумом

 

#21 2012-11-18 15:28:57

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

Re: Fazenda Проблема 8 балів

Прийнято таке рішення: Повторної перевірки не проводити. Але якщо комусь із "8-бальних фазендників" не буде вистачати до виходу ц фінал <=12 балів, до фіналу їх допустити.
Все - тему закрито.

Поза форумом

 

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

Powered by Likt
© Copyright 2002–2009 Likt