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

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 22 з 24«122021222324»
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.11 Змагання, конкурси, олімпіади » Олімпіадні задачі. (розв’язування олімпіадних задач.)
Олімпіадні задачі.
Ковальчук_Олександр Дата: Вт, 20.11.2007, 20:07 | Повідомлення № 1
Ветеран спілкування
Повідомлень: 3631
Нагороди: 17
Рейтинг: 197
Шановні учасники форуму! Скоро районна олімпіада по інформатиці. Допоможіть мені та іншим вчителям інформатикам, які погано розуміються на задачах олімпіадного рівня, підвищити свої знання в області програмування.

Увага! При публікуванні розв’язку обов’язково, окрім самої паскаль-програми писати математичну модель задачі і роз’яснювати ваш розв’язок максимально зрозуміло. Бо із самого тексту програм, не завжди все зрозуміло для пересічного інформатика. 


[admin]Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!


Відредаговано: W-w-W - Чт, 07.01.2016, 23:28
Bandalak Дата: Пт, 24.11.2017, 00:51 | Повідомлення № 316
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
А таку задачу з тренувального туру хто може зробити?

Прикріплення: 8208917.jpg(7Kb)
Bandalak Дата: Пт, 24.11.2017, 17:38 | Повідомлення № 317
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
Знайшов розв'язок в інтернеті. Все працює, але якийсь не акуратний стиль!



http://programuemorazom.blogspot.com/p/blog-page.html
Пилипчук_О_П Дата: Сб, 25.11.2017, 09:43 | Повідомлення № 318
Ветеран спілкування
Повідомлень: 3917
Нагороди: 30
Рейтинг: 352
Цитата Bandalak ()
А такий алгоритм?
Код

var n:integer;

function kor(c:integer):integer;
var s:integer;
begin
  if c>9 then
     begin
          s:=0;
          repeat
                s:=s+c mod 10;
                c:=c div 10;
          until c=0;
          kor:=kor(s)
     end else kor:=c
end;

begin
  readln(n);
  writeln(kor(n))
end.

Масштабно... З рекурсією! :)
Пилипчук_О_П Дата: Сб, 25.11.2017, 09:46 | Повідомлення № 319
Ветеран спілкування
Повідомлень: 3917
Нагороди: 30
Рейтинг: 352
Цитата Bandalak ()
Мабуть на С++ типу int мало буде. Який найбільший цілий тип там?

Чому б не читати дані зразу в змінні дійсного типу (double)?
Bandalak Дата: Сб, 25.11.2017, 15:11 | Повідомлення № 320
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
Сьогодні відбулася районна олімпіада з Інформатики у Чернівецькій області.
Задачі значно важчі чим торік. Більшість зробило перші дві задачі і частково третю.

У додатку вкладено роботи, що набрали найбільше балів.
Задача А - 100 балів
Задача B - 100 балів
Задача C - 70 балів
Задача D - 8 балів
Задача Е - Ніхто не починав.

До перших двох задач питань ніяких немає.

По задачі С:




Код
n = int(input())
vag=[0]*55
kupe=[0]*10
for i in range(1,n+1):
   x = int(input())
   vag [i]= x
   
for i in range(1,n+1):
   if vag[i]<=36:
      k=(vag[i]+3)//4
      kupe[k]=kupe[k]+1
   else:
      k=(54-vag[i]+2)//2
      kupe[k]=kupe[k]+1
j=1
mx=0
while j<=9:
    p=0
    while kupe[j+p]==6:
      p=p+1
    if p>mx:
       mx=p
    j=j+1

print(mx)


Ніби все правильно. Але система видає на деяких тестах - "Помилка у розв'язку". Що це означає?
Раніше такого повідомлення не бачив ніколи.
Бачив тільки "Помилка компіляції" і "Розв'язок не правильний!.
Прикріплення: OL2017.rar(53Kb)
Ковальчук_Олександр Дата: Сб, 25.11.2017, 19:43 | Повідомлення № 321
Ветеран спілкування
Повідомлень: 3631
Нагороди: 17
Рейтинг: 197
На мій погляд дуже добре, що задачі сильно диференційовані.
В нас олімпіада відбудеться на початку грудня, але я думаю, що мій учень перші дві також би осилив без особливих проблем, хоч не стидно було б з 0 балів повертатись ).
А так то да, будемо думати над складнішими, хоча взявши кращого учня з уроку, сильних результатів досягти наврят чи вийде, треба все таки довго і вперто готуватись.
Bandalak Дата: Сб, 25.11.2017, 20:14 | Повідомлення № 322
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
Цитата Bandalak ()
Помилка у розв'язку

Cам знайшов помилку. Перевіряло значення неіснуючої комірки масиву. Збільшив розмір масиву на 1 і працює.
Це воно не могло порахувати у 9-му купе!

Код
n = int(input())
vag=[0]*55
kupe=[0]*11
for i in range(1,n+1):
   x = int(input())
   vag[i] = x
for i in range(1,n+1):
   if vag[i]<=36:
      k=(vag[i]+3)//4
      kupe[k]=kupe[k]+1
   else:
      k=(54-vag[i]+2)//2
      kupe[k]=kupe[k]+1
j=1
mx=0
while j<=9:
    p=0
    while kupe[j+p]==6:
      p=p+1
    if p>mx:
       mx=p
    j=j+1
print(mx)


Але, на жаль, перевірити на сервері вже немає можливості, бо турнір закінчився.
Дуже хотілося, щоб після олімпіади відкривали знову турнір на пару днів для роботи над помилками. Але не знаю кому таку ідею дати, щоб реалізував?
fox11 Дата: Сб, 25.11.2017, 20:33 | Повідомлення № 323
Тут живе...
Повідомлень: 199
Нагороди: 2
Рейтинг: 35
Цитата Bandalak ()
Збільшив розмір масиву на 1 і працює.Це воно не могло порахувати у 9-му купе!

Не понял. 10-й элемент имеет имя kupe[9]. Зачем 11-й ?
Bandalak Дата: Сб, 25.11.2017, 20:36 | Повідомлення № 324
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
У Пайтоні нумерація елементів масивів починається з нуля. Але дана програма нульовий не використовує, а починає з 1-го.
fox11 Дата: Сб, 25.11.2017, 21:01 | Повідомлення № 325
Тут живе...
Повідомлень: 199
Нагороди: 2
Рейтинг: 35
Цитата fox11 ()
10-й элемент имеет имя kupe[9]
Так зачем 11-й,  kupe[10] нету!
Bandalak Дата: Сб, 25.11.2017, 22:07 | Повідомлення № 326
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
Там перевіряє наступний елемент за межами кількості купе.
Тестую, якщо вводжу 6 33 34 35 36 37 38 - то при 10 елементах викидає, а при 11 - працює!
Пилипчук_О_П Дата: Нд, 26.11.2017, 00:16 | Повідомлення № 327
Ветеран спілкування
Повідомлень: 3917
Нагороди: 30
Рейтинг: 352
Цитата Bandalak ()
Дуже хотілося, щоб після олімпіади відкривали знову турнір на пару днів для роботи над помилками.

На Хмельницькому сервері є така річ, як дорозв'язування. Тобто, змагання відбулось, результати зафіксовано, а учасники можуть в своє задоволення попрацювати.
gry Дата: Нд, 26.11.2017, 10:31 | Повідомлення № 328
Досвідчений учасник
Повідомлень: 1062
Нагороди: 3
Рейтинг: 120
Цитата Bandalak ()
Сьогодні відбулася районна олімпіада з Інформатики у Чернівецькій області.
Точно такі задачі були на Полтавщині. Перші дві задачі - розв'язали майже всі (200 балів у кожного),  третю - тільки почали ...
fox11 Дата: Нд, 26.11.2017, 10:41 | Повідомлення № 329
Тут живе...
Повідомлень: 199
Нагороди: 2
Рейтинг: 35
Цитата Bandalak ()
6 33 34 35 36 37 38
...
j=1
mx=0
while j<=9:
p=0
while kupe[j+p]==6:
p=p+1
if (j+i) > 9:
break

if p>mx:
mx=p
j=j+1
print(mx)

http://pythontutor.ru/visualizer/


Відредаговано: fox11 - Нд, 26.11.2017, 10:50
Bandalak Дата: Нд, 26.11.2017, 11:40 | Повідомлення № 330
Лідер форуму
Повідомлень: 5582
Нагороди: 40
Рейтинг: 260
Цитата Пилипчук_О_П ()
На Хмельницькому сервері є така річ, як дорозв'язування. Тобто, змагання відбулось, результати зафіксовано, а учасники можуть в своє задоволення попрацювати.

Клас!!!

А який це сервер?
http://ejudge.sumdu.edu.ua/cgi-bin/new-client?

Цитата fox11 ()
if (j+i) > 9:
break

Дякую! Досконалості немає меж.
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.11 Змагання, конкурси, олімпіади » Олімпіадні задачі. (розв’язування олімпіадних задач.)
Сторінка 22 з 24«122021222324»
Пошук:


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