Блог пользователя akirakaze

Автор akirakaze, 16 лет назад, перевод, По-русски
Приветствую всех на Codeforces Beta Round #17, который состоится 10-го июня (четверг) 2010, 19:00 (UTC +4, Московское время). Этот контест буду представлять я. 
Хочется сказать отдельное спасибо Михаилу Мирзаянову, который сделал проведение контеста возможным, Артёма Рахова за помощь в тестировании авторских решений и Юлии Сатушиной за качественный перевод задач на английский. Большое спасибо Гене Короткевичу за составление условий, написание авторских решений и красивых идей. Надеюсь, задачи вам понравятся.

Желаю чтобы число 17 оказалось для вас интересным!

Обсуждение задач предлагаю проводить здесь в комментариях после конца контеста.

UPD: Контест закончился, всем спасибо за участие!
UPD: 



  • Проголосовать: нравится
  • +31
  • Проголосовать: не нравится

16 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится
Ни в коем случае не оставляй какую-либо тему пустой - яйцами закидают.
Лучше оставь перекрёстные ссылки на темы с подписью:
Просьба отписываться тут (ссылка) Просьба отписываться тут (ссылка) ...
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
:) Да всё ок, просто пост создался два раза о_о я вообще не доумеваю как ;) Все фичи поправятся, не переживайте ^_^ Регайтесь на контест главное во время :)
16 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Наверное одну из тем лучше почистить (лучше сейчас прям), или пустить в расход, например, под обсуждение задач.
16 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Я правильно понял, что автором задач и решений по сути выступает Гена Коротевич?

Тогда сразу вопрос - почему автор контеста не он, а Вы? Он на столько скромный ? :)

  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +11 Проголосовать: не нравится
    Насколько я понял, brainail придумал идеи задачи, а Гена Короткевич сформулировал и написал конечные условия, т.е. "сказку", "присказку", описал формат ввода/вывода и т.п.

    Но возможно я слишком оптимистичен, и brainail всего лишь представляет контест, хотя это было бы странным.
    • 16 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +7 Проголосовать: не нравится
      Я скорее выступаю соавтором этого контеста. Идеи задач и решений правильнее было бы назвать общими, а я написал перекрёстные решения и помог написать условия задач.
16 лет назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится
Товарищи меньше думаем :) На контесте вам нужно думать, а тут не надо! ^_^
Идеи некоторые задачи не мои, но это не меняет суть дела :) Ваша задача решить все задачи!! На что желаю вам удачи =) 
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +16 Проголосовать: не нравится
    Люди с программистским складом ума могут быть несовместимы с тем, чтобы в какие-то моменты не думать ;) .
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Is the link to number 17's page on wikipedia some kind of a hint on the type of problems for today's match? :P Prime numbers???
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
It is very disgusting. I have registered for the event and solved the problem but when I am submitting the solution it is saying "You should have registered". And there is no admin available to contact..
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    You can contact admin by his profile
    http://mirror.codeforces.com/profile/MikeMirzayanov
    There you can send a personal message if you want, ofc.
    Also, there were a link on the contest page to publish a question.
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
How Problem B can be solved?

using map in c++?
16 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Nice problem set!. Any hints on how to solve C? =)
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
У кого-нибудь было WA 18 в D ? Не знаю, что не так. Есть какие-нибудь особенности у этого теста?
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Неужели задача D решалась через быстрое возведение в степень. Если так то очень обидно что решение на Java, с единственной операцией деления по модулю большого числа не проходила.
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Мне кажется, там что-то более умное на теорию чисел, но увы я не решил. Т.к. все сданные решения работают за очень малое время. А возведение в степень, даже на С, дает TL.
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +9 Проголосовать: не нравится
    Ну да, через возведение, но только не длинных чисел, а чисел <= C :)
    • 16 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +17 Проголосовать: не нравится

      a^b % c == (a % c) ^ (b  % phi(c)) % c

      где phi(c) - функция Эйлера.


      Правда, есть одна тонкость - если a^b %c = 0, то этот метод может спалиться (даст не ноль). Можно понять, что это происходит, когда (a % c) ^ (phi(c)) = 0 и b >= phi(c). Поэтому в случае b >= phi(c) надо ещё взять (a % c) ^ (phi(c)) и посмотреть, не ноль ли он. Ну или может есть какой-то другой хак, не знаю.

      • 16 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Это же не работает, если a и c не взаимно просты
        • 16 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          It can be patched to work in that case. First, decompose c in it's factors, p1^e1 * p2^e2 * ... Then solve for each pi^ei independently and get the final result by merging all individual results using the Chinese Remainder Theorem.

          Let mod = p^k, and tot = p^k - p^(k-1). To solve the equation (a^b) % mod is equivalent to solve ((a%mod) ^ (b%tot)) % mod, except when a is divisible by prime p.

          To patch this is easier. Count how many times p can divide a, let call this number x. Then, in a^b the prime p will appear exactly x*b times. If x*b >= k, return 0, otherwise, there are not enough primes to make the mod 0, so just do the normal thing.

          Here is the relevant snippet with this part: http://ideone.com/goy8b
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +18 Проголосовать: не нравится
    Логично что оно не проходило, перевод числа из десятичного в двоичное в яве работает за квадрат от длины. Надо было реализовывать возведение в степень без этого перевода, такое решение проходит
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А, или проблема даже была в a % c ? Жесть :)
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А, или проблема даже была в a % c ? Жесть :)
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А что, Java может прочитать 106-значное число в BigInteger меньше, чем за две секунды? Для этого нужен какой-то специальный десятичный BigInteger?
  • 16 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +8 Проголосовать: не нравится
    В этой задаче можно обойтись без теории чисел вообще. Жалко что придумал где-то после 8 или 9 сабмита издевательства над функцией эйлера)

    Решить можно так. Первое число можно взять по модулю из-за этого ничего плохого не произойдет точно. На (a-1) можно умножить в конце. Основная сложность с подсчетом a^(b-1). Для этого можно вычесть из b 1 как из длинного числа. А потом пройтись по разрядам начиная от старшего и сделать что-то такое ans=((ans^10)*(a^b[i]))%c. Тогда и взаимная простота значение потеряет и в принципе никаких случаев.
16 лет назад, скрыть # |
 
Проголосовать: нравится +21 Проголосовать: не нравится
Thank you brainail, thank you tourist! It was really good contest!
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
So, how was D solved?
16 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Разбор будет :) И там будет очень много интересного и полезного! :)
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
А можно спросить в задаче B квалификация у всех разная? Просто мое решение я думаю не прошло бы если бы возможно была бы квалификация равная у нескольких сотрудников (особенно если бы они это начальники без начальников, т.е. с максимальной квалификацией)
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
damm, the number of divisions is log(10^k) not log(k) =\, stupid mistake, thank you for replying.
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Why is the task of E so little decided? and C? =)
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

К сожалению прпоустил контест (проснулся за три минуты до начала. регистрация была закрыта :о( )
Почитал задачи. Очень понравились D и E, особенно Е - действительно клевые задачи. Не понравилась С :о)

Опять же, поощрительные должны быть проще :о)

»
11 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +30 Проголосовать: не нравится

Недавно я изучал решение одного очень уважаемого программиста задачи Е с этого контеста и случайно обратил внимание на 45-й тест:

Казалось бы, что в этом такого? Но вот если загуглить число 731, то можно обнаружить ссылки на японский нацистский концлагерь! Таким образом, автор тестов явно хотел вставить оскорбление светлой даты победы "1945" этим гнусным числом.

В какой-то другой день, я, возможно, не стал бы обращать на это внимание, но сегодня день особенный и я не мог просто пройти мимо. Мне кажется, что автора контеста нужно, как минимум, дисквалифицировать навеки, а как максимум — полностью откатить результаты контеста, чтобы преступление пятилетней данности никому не сошло с рук. Как думаете вы, завсегдатаи ресурса?