Коледж алгоритмічного програмування

    Лекція Сьома (Сезон Другий)

    Сьома лекція другого сезону відбудеться 4 листопада о 17 годині у конференц-залі на третьому поверсі.

    Лекцію ведуть: Shef та Павло.

    Тема: Вступ до теорії чисел.

    На порядку денному:

    • Дільники натурального числа.
    • Найбільший спільний дільник та найменше спільне кратне.
    • Прості числа та визначення чи є число простим.
    • Решето Ератосфена та оцінка складності алгоритму.
    28.10.2010 | Shef | 14 коментарів

    14 коментарів to “Лекція Сьома (Сезон Другий)”

    1. Patlatus каже:
      01.11.2010 о 20:12

      гм, я завжди про решето ератосфена думав як про чисто теоретичний математичний об’єкт, а не практичний інформатичний…
      А й справді…
      До речі, цікаво, а який алгоритм складніший: припустимо, прості числа менші за 300 ми знайшли і записали у змінну константою або у файл, шукаємо наступні, менші за 90000 нехай, один алгоритм полягає в тому, щоби перебирати всі числа від 301 і 90000 і перевіряти, чи вони діляться на знайдені прості числа менші за 300, звісно, якщо хоч на одне ділиться, тоді переходимо до наступного числа, інший алгоритм за решетом ератосфена, записуємо усі числа p_k * j що вони не прості, для всіх 2 <= p_k <= 300 і для деякої множини чисел A_j(k) що взагалі то кажучи, залежить від k…

    2. kobra каже:
      03.11.2010 о 12:30

      Одна з найбільших переваг решета Ератосфена – відсутність складних операцій. В цьому алгоритмі немає операцій ділення і лише одна операція множення на зовнішньому циклі.

    3. Pawlo каже:
      04.11.2010 о 21:33

      Задачі для домашньої роботи:
      Супер проста проблема (http://acm.lviv.ua/fusion/viewpage.php?page_id=9&id=1004&)
      Остання проблема (http://acm.lviv.ua/fusion/viewpage.php?page_id=9&id=1010&)
      Космозаправки(http://acm.lviv.ua/fusion/viewpage.php?page_id=9&id=1022&)
      Новорічна математика(http://acm.lviv.ua/fusion/viewpage.php?page_id=9&id=1053&)
      НОД(http://www.e-olimp.com/problems/1146)
      НОД и НОК(http://www.e-olimp.com/problems/1244)
      Наименьшее общее кратное(http://www.e-olimp.com/problems/1243)

    4. LeBron каже:
      06.11.2010 о 17:44

      Розв’язок задачі Шефа:
      Ми маємо зліченну кількість варіантів початкової швидкості та зліченну кількість варіантів початкової позиції. Оскільки декартів добуток зліченних множин є зліченним, то нам досить побудувати якусь бієкцію на множину натуральних чисел, і за цією бієкцією відгадувати, де машинка.
      Мені найпростішим виглядає варіант перебору зі зростанням i (модуля):
      (i,0..і), (i,-і..1), (-i,0..і),(-i,-і..0), тобто перебираємо пари “Початкова швидкість, початкова координата”, і для кожної пари ми можемо, за номером запиту та цими двома значеннями, визначити в якій координаті мала би бути машинка в цей момент.
      В такому разі ми для довільної пари початкової швидкості й модуля відгадаємо гарантовано за час, що не перевищує квадрат більшого за модулем з 2 значень, збільшеного на 1.

      -=-=-

      Розв’язав у п’ятницю на лекції з дискретки, але я на новому місці проживання ще не маю доступу до Інтернету, так що виклав тільки “з поверненням додому”.

      -=-=-

      А є оптимальніший розв’язок? Теоретично, його не повинно існувати, але може я просто в теорії загнався)

      -=-=-

      А, і хто не був на лекції, сама задачка: є машинка, яка стартує з точки з цілочисельними координатами з цілочисельною швидкістю (незмінною, тобто в момент часу k машинка в координаті k*speed+start). Раз в одиницю часу можна спробувати вгадати поточне розташування машинки. Питання – чи можна гарантовано колись вгадати і як це зробити, якщо можна?

    5. LeBron каже:
      06.11.2010 о 23:46

      Знайшов хорошу задачку на тематику лекції, http://acm.tju.edu.cn/toj/showp3483.html
      Можете провірити, чи засвоїли матеріал про кількість дільників (те, що так старався пояснити Бойко).

    6. Shef каже:
      08.11.2010 о 15:56

      Хороша ідея, спробуй її розвинути. Справа в тому, що потрібно не просто один раз вгадати де знаходиться машинка, а визначити її поведінку таким чином, щоб могти ловити її коли завгодно у майбутньому. Тобто уяви собі що ти зловив машинку у якийсь момент часу, чи зможеш ти її зловити наступного?

    7. Shef каже:
      08.11.2010 о 15:58

      До речі, питання до тих хто був на лекції: Чи дійсно вона була дуже простою? Можливо надалі не варто робити такий “примітивних” занять?

    8. LeBron каже:
      08.11.2010 о 20:28

      З одного боку лекція була відносно проста, з іншого, тести на простоту є зовсім не очевидними і не такими “простими” (хоча вони відомі майже всім “профі”), як факторизація за корінь квадратний.
      Скоріше, я б сказав, що треба робити лекції більш завантаженими. Не такими, як було, коли Жека за лекцію розказав всі можливі сортування, крім, здається, підрахунку і порозрядки (і ше п’яниці і дурного:) ), бо це було вже занадто… Але на минулій було занадто мало корисної інформації, можна більше “впихнути” в той час без шкоди для сприйняття… А якщо веде Шеф, то й сумніше/нудніше від того не стане)
      -=-=-
      “Тобто уяви собі що ти зловив машинку у якийсь момент часу, чи зможеш ти її зловити наступного?” – ага, значить, так?.. В цілому, там виходить знов зліченна кількість варіантів, так що далі потрібно тупо перебирати… Якщо маємо момент часу, в який ми зловили машинку (а) і точку, де зловили (с), то не важливо, за якою гіпотезою ми вибирали цю точку – в реальності машинка могла мати довільну цілочислову швидкість.

      Далі перебір за швидкістю (0, -1, 1, -2, 2, -3, 3…), для кожної швидкості можем встановити гіпотетичну початкову координату (яка мала б бути, щоб в момент а машинка була в с при такій швидкості), і від неї відштовхуватись – маючи координату, швидкість і час, знаходим очікувану позицію машинки, і так поки не вгадаєм.

    9. Shef каже:
      19.11.2010 о 00:51

      Так, чекаємо на повну версію розв’язку задачі про машинку!

    10. LeBron каже:
      20.11.2010 о 22:46

      перебираємо по н від 0 до нескінченності, вкладений цикл по м від 0 до н (початкова координата і швидкість). Для кожної пари (н,м) розглядаєм 4 випадки: (н,м), (-н,м), (н,-м), (-н,-м). Для кожного випадку визначаємо гіпотетичну координату, як н+к*м, де к – кількість часу, що пройшла від початку відліку. Тоді ми гарантовано зловим машинку не пізніше, ніж коли розглядатимем пару, яка відповідає її дійсним даним. Але може статись, що ми зловимо її і раніше. Тому після того, як вперше зловили машинку, потрібно перебирати знову. Тепер у нас уже одна невідома, оскільки швидкість можна виразити через початкову координату (якщо зловили в момент к в точці а, то початкова координата н=а-к*м, перебираючи по м від 0 до нескінченності (за принципом (м), (-м)), вираховуємо координату, в якій мала би бути машинка в цей момент, як н+(к’-к)*м, замінивши н маємо
      а-к*м+(к’-к)*м=а+к’*м (де к’ – момент часу, який ми розглядаємо, к – момент, в який ми зловили машинку вперше, а – точка, де зловили).
      Якщо хоч раз зловимо машинку ще раз, значить ми гарантовано розглядаємо правильну пару (н,м), отже, далі за цією парою можна в довільний момент ловити машинку.
      -=-=-
      З.І. Вибачайте, влом було розкладки перемикати весь час)

    11. Shef каже:
      25.11.2010 о 16:58

      На жаль (чи на щастя), розв’язок є не повністю вірним. Хто знайде помилку? Достатньо просто навести приклад коли наведений алгоритм не буде працювати.

    12. LeBron каже:
      25.11.2010 о 20:59

      А, ще така дописка, що провірку, якщо це потрібно, треба доповнювати симетричною (до н,м симетрична м,н), бо інакше ми ніколи не потрапим на пару, скажімо, (0,1).
      Зрозуміло, що в разі рівних параметрів симетричної не треба)

    13. Shef каже:
      01.12.2010 о 19:26

      Добре, тоді розкажи детальніше що ти будеш робити коли вперше впіймаєш машинку.

    14. LeBron каже:
      02.12.2010 о 15:49

      Буду перевіряти всі швидкості по черзі (0, 1,-1, 2,-2,3,-3,4,-4…), для кожної вибираючи координату, де повинна бути машинка в цей момент (множимо часову різницю на швидкість і на стільки зміщаємось від точки першого “попадання”), і ставлячи потрібний запит.
      Коли вдруге зловлю машинку – все, це вже правильна відповідь.

    Leave a Reply

    Клацніть, щоб скасувати відповідь.

    CAPTCHA Image CAPTCHA Audio
    Refresh Image
    Лекція Восьма (Сезон Другий)
    Лекція Шоста (Сезон Другий)
     
    • Банери

    • Категорії

      • Змагання (2)
      • Лекції (149)
      • Некатегоризовано (12)
      • Розбір задач (13)
      • свято (4)
    • Архіви

      • Жовтень 2016 (1)
      • Квітень 2016 (3)
      • Березень 2016 (5)
      • Лютий 2016 (3)
      • Грудень 2015 (3)
      • Листопад 2015 (1)
      • Травень 2015 (1)
      • Квітень 2015 (4)
      • Березень 2015 (4)
      • Лютий 2015 (3)
      • Грудень 2014 (2)
      • Листопад 2014 (4)
      • Жовтень 2014 (5)
      • Вересень 2014 (1)
      • Травень 2014 (2)
      • Квітень 2014 (3)
      • Березень 2014 (3)
      • Лютий 2014 (1)
      • Грудень 2013 (3)
      • Листопад 2013 (4)
      • Жовтень 2013 (4)
      • Травень 2013 (2)
      • Квітень 2013 (4)
      • Березень 2013 (4)
      • Лютий 2013 (4)
      • Листопад 2012 (7)
      • Жовтень 2012 (2)
      • Травень 2012 (1)
      • Квітень 2012 (4)
      • Березень 2012 (5)
      • Лютий 2012 (4)
      • Грудень 2011 (3)
      • Листопад 2011 (4)
      • Жовтень 2011 (4)
      • Вересень 2011 (3)
      • Травень 2011 (2)
      • Квітень 2011 (5)
      • Березень 2011 (4)
      • Грудень 2010 (4)
      • Листопад 2010 (5)
      • Жовтень 2010 (4)
      • Вересень 2010 (3)
      • Травень 2010 (4)
      • Квітень 2010 (4)
      • Березень 2010 (6)
      • Лютий 2010 (3)
      • Січень 2010 (1)
      • Грудень 2009 (7)
      • Листопад 2009 (2)
      • Жовтень 2009 (2)
    • ACM-Контестер

      • ACM-Contester Архів задач із автоматичною системою тестування “ACM Contester”.
    • Мета

      • Зареєструватись
      • Вхід
      • RSS публікацій
      • RSS коментарів
    

    © 2026 Коледж алгоритмічного програмування is proudly powered by WordPress | Constructor Theme
    Entries (RSS) and Comments (RSS).
    Наші проекти: Контестер, _Колледж.