Вт, 06.12.2016, 02:45
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво
Безлимитный хостинг, бесплатный домен, бесплатный хостинг, Хостинг, dedicated, сервер, хостинг в Европе, хостинг в Германии, выделенный сервер

Сторінка 1 з 11
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.4 Авторські методики. Олімпіадні задачі » Розв'язки олімпіадних задач (Умови та розв'язки деяких задач підвищеної складності)
Розв'язки олімпіадних задач
SLKuty Дата: Пн, 18.05.2015, 23:05 | Повідомлення № 1
Монтажер
Повідомлень: 764
Нагороди: 4
Рейтинг: 65
Я, на жаль, не маю часу щоб розв'язувати всі олімпіадні задачі, але деякі розв'язав і розмістив на своїй сторінці. Планую по трохи додавати. Поки що дивіться те що є.
http://lidersite.com/%d0%be%....rmatyky
Пилипчук_О_П Дата: Вт, 19.05.2015, 00:14 | Повідомлення № 2
Ветеран спілкування
Повідомлень: 3061
Нагороди: 18
Рейтинг: 165
Корисне починання.

Деякі технічні зауваження:
1) для зручності тестування в програму вставлені мітка та оператор goto... і після цього програма стала непридатною для автоматизованої перевірки. А саме такі системи перевірки використовуються на більшості олімпіад і онлайнових ресурсів. Таких речей слід уникати і ні в якому разі не привчати до цього учнів. Бували випадки, коли учень під час обласної олімпіади щось подібне дописав до своєї робочої (!) програми, внаслідок чого програма не пройшла жодного тесту. Результат - 0 балів за задачу.
2) команди на кшталт writeln (‘введіть початкову годину і хвилину через пробіл’); також неприйнятні для більшості олімпіад, оскільки програма виводить дані, не передбачені умовою. В умові сказано: "Вихідні дані: ви виводите на екран одне число — кількість ударів, які зробив годинник за цей відрізок часу". А насправді програма супроводжує число ще декількома текстовими рядками. Наслідок - 0 балів за задачу.

P.S. Продублював ці зауваження в коментарі на сторінці з розв'язками. Так зацікавлені вчителі й учні швидше їх знайдуть :)


Відредаговано: Пилипчук_О_П - Вт, 19.05.2015, 00:21
beregok Дата: Вт, 19.05.2015, 09:48 | Повідомлення № 3
Тут живе...
Повідомлень: 153
Нагороди: 3
Рейтинг: 14
Нещодавно почав потроху освоювати Python
Спробував розв’язати задачу про кількість ударів годинника від SLKuty 

Цитата
"""
Biy starovinnogo godynnika
"""
import sys
          
s1=0
s2=0
s12=0
h1 = int(sys.argv[1]) # Pochatkova ujlbna, vge probiv
h2 = int(sys.argv[2]) # Kinceva goduna, bude bytu

for i in range(12):
    i=i+1
    s12=s12+i
s12=s12 # Kilkist udariv za 12 godun = 78 

if h1<13: # Perevirka godun
    for i in range(h1):
        i=i+1
        s1=s1+i

else:
    for i in range(h1-12): # Yakcho bilshe  12
        i=i+1
        s1=s1+i
    s1=s1+s12 # + 78 udariv

if h2<13:
    for i in range(h2):
        i=i+1
        s2=s2+i

else:
    for i in range(h2-12):
        i=i+1
        s2=s2+i
    s2=s2+s12

print s2-s1 # rezultat riznuca vidbutuh godun


Начебто вийшло, якщо щось не так порадьте
Прикріплення: kurantu.py(1Kb)
swetikccc Дата: Вт, 19.05.2015, 10:08 | Повідомлення № 4
Ветеран спілкування
Повідомлень: 3286
Нагороди: 20
Рейтинг: 241
summa := 0;                 // зайва команда так як сума на початку програми автоматично=0

Вважаю коментар помилкою, потрібно привчати до ініціалізації змінної.
Newbie Дата: Вт, 19.05.2015, 14:35 | Повідомлення № 5
Хелпер
Повідомлень: 1409
Нагороди: 8
Рейтинг: 81
Цитата beregok ()
розв’язати задачу про кількість ударів годинника від SLKuty
по самому розв'язку - я не зовсім розумію, який у Вас алгоритм, бо те, що я запускаю дає неправильні відповіді, включно з від*ємними.
по ідеї: є 12-годинний цикл (78 ударів), від яких віднімаються ті, котрі йдуть до початкової години і після кінцевої? але якось багато не
враховується

по Python: якщо потрібно створити цикл з лічильником для послідовності чисел 1-h1 (включно), і з тими числами виконувати якісь операції, то краще писати не
for i in range(h1):
i=i+1
s1=s1+i
а
for i in range(1,h1+1):
s1+=i
+1 тут потрібно, щоб включити значення h1

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

і до речі, я щось не знаю, чи є можливість(і потреба) розрізняти введення в один рядок чи в кілька?
Прикріплення: kuranty_my.py(1Kb)


Відредаговано: Newbie - Вт, 19.05.2015, 17:39
beregok Дата: Вт, 19.05.2015, 18:02 | Повідомлення № 6
Тут живе...
Повідомлень: 153
Нагороди: 3
Рейтинг: 14
Дякую Вам за допомогу!

Це моя третя програма на Пайтоні (Як правильно Пайтон чи Пітон?)

Мої міркування були такі, та на жаль, теорія не зійшлася з практикою:
Водимо значення годин що пройшла h1 та буде h2 (пройшло 11 буде 13)
Обчислюю кількість ударів за 12 годин, це буде 78
Перевіряю значення h1 якщо менше дванадцяти обчислюємо кількість кількість ударів s1
Інакше обчислимо кількість ударів і додамо 78, адже після 12 години знову буде 1, 2... ударів
Перевіряю значення h2 якщо менше дванадцяти обчислюємо кількість кількість ударів s2
Інакше обчислимо кількість ударів і додамо 78, адже ... ...
Обчислюємо різницю ударів між h2 і h1, s2-s1

Запускав програму так:
capricornus@capri:~/work.py$ python kurantu.py 23 13
Тобто значення вводив через пробіл

Дізнався що значення можна вводити в інтерактивному режимі
Наприклад:
def text_prompt(msg):
try:
return raw_input(msg)
except NameError:
return input(msg)

h1 = int(raw_input('input h1:'))
h2 = int(raw_input('input h2:'))

Багато чого не знаю в Пайтоні, наприклад функцію, що вона робить:
elif h1>h2:
можна детальніше

А ще однією задачею заморочився(2 задача). Обчислити n-значення числа послідовності Фібоначчі
Що роблю не так не знаю, начебто щось працює та не проходить онлайн перевірку

"""
fiboonachi
"""
import sys
a=0
b=1
s=0
n = int(sys.argv[1])

for i in range(2, n + 1):
s=a+b
a=b
b=s

print(s)


Відредаговано: beregok - Вт, 19.05.2015, 18:02
Пилипчук_О_П Дата: Вт, 19.05.2015, 18:05 | Повідомлення № 7
Ветеран спілкування
Повідомлень: 3061
Нагороди: 18
Рейтинг: 165
Цитата Newbie ()
я щось не знаю, чи є можливість(і потреба) розрізняти введення в один рядок чи в кілька?

Щодо цього вибір мови має значення. Там де в одних мовах можна вводити майже як попало (Паскаль), в інших можуть виникати проблеми. Експериментуючи з Python'ом бачив, що фрагмент для читання чисел з одного рядка, відокремлених пропуском, працював некоректно, якщо вводити в декількох рядках. Ознайомлення було досить поверхневе (з десяток задач), тому, якщо хтось знає глибше, прошу поділитись.

Щоб повернутись до теми гілки пропоную одну зі своїх спроб аналізу задачі (6-річної свіжості :) ):
http://teachlab.ucoz.ua/publ/15-1-0-33
SLKuty Дата: Ср, 20.05.2015, 23:00 | Повідомлення № 8
Монтажер
Повідомлень: 764
Нагороди: 4
Рейтинг: 65
Пайтон, звичайно цікава і сучасна мова програмування, але на олімпіадах напевно не використовується. Так само, як Java, або Delphi у візуальному режимі. Можливо нова влада прийме якісь закони більш демократичні щодо вибору мови програмування. Ніби там наверху щось зрушується з мертвої точки і інформатику стануть називати  - програмуванням, якщо всі проголосують "за"
Пилипчук_О_П Дата: Чт, 21.05.2015, 08:50 | Повідомлення № 9
Ветеран спілкування
Повідомлень: 3061
Нагороди: 18
Рейтинг: 165
Цитата SLKuty ()
Можливо нова влада прийме якісь закони більш демократичні щодо вибору мови програмування.

А чим старі погані? :)
Якщо серйозно, то цілком логічним є орієнтувати шкільну/районну/обласну/всеукраїнську олімпіади на вимоги міжнародної.
Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.4 Авторські методики. Олімпіадні задачі » Розв'язки олімпіадних задач (Умови та розв'язки деяких задач підвищеної складності)
Сторінка 1 з 11
Пошук:


© Форум інформатиків України, 2007-2016.