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

Автор Renyxa, 9 лет назад, По-русски

Здравствуйте. Долго думал над этой задачей, но решения не придумал. Подскажите, пожалуйста, как можно решить эту задачу.

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

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Если по ссылке не видно, то прочитайте так.

    Алпай будет выступать на танцевальном соревновании. После выступления каждый из 7 членов жюри выставляет положительную оценку. Сумма этих оценок является общим баллом.

    Алпай считает выступление хорошим, если его общий балл будет равен N. Он же считает выступление идеальным, если выступление будет хорошим и каждая оценка от жюри будет простым числом.

    Для заданного N требуется найти пример оценок жюри идеального выступления.

    Формат входного файла

    В первой строке входного файла задается одно положительное целое число N (5 <= N <= 1015).

    Формат выходного файла

    Если решение существует, выведите семь простых чисел, разделенных пробелом, в порядке не убывания. Из различных решений выбирать с наименьшими простыми числами. Если решение не существует, выведите “-1”.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Или попробуйте по этой ссылке.

»
9 лет назад, # |
Rev. 3   Проголосовать: нравится +24 Проголосовать: не нравится

Брутфорс в лоб. Можно просто перебрать 7 переменных, инициализируя каждую двойкой. Суть в том, что любое число можно достаточно быстро разбить на сумму двух простых. Следовательно ответ можно представить, как N = 5 * 2 + a + b, a > 2, b > 2 в случае четного N, и N = 4 * 2 + 3 + a + b в случае нечетного.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Одно замечание. В условии недочёт ( только что заметил ). Ограничения не N (5 <= N <= 1015), а N (5 <= N <= 10^15)

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +11 Проголосовать: не нравится

      Это древний баян, в оригинальной версии ограничения такие же

      • »
        »
        »
        »
        9 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        А как найти a и b при данных ограничениях, ибо при больших N выдаёт тайм лимит ?

        • »
          »
          »
          »
          »
          9 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Для маленьких N пишешь тупое решение. Для больших: Находишь ближайшее простое число, меньшее N, пусть оно будет A, тогда тебе нужно представить число N — A в виде суммы 6 простых чисел, то есть ты запускаешь тупое решение. Если N — A < 12, то нужно взять меньшее A. Вот, почитай тут

          • »
            »
            »
            »
            »
            »
            9 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Решение GoToCoding не подходит, ибо не учитывается условие "Из различных решений выбирать с наименьшими простыми числами".

        • »
          »
          »
          »
          »
          9 лет назад, # ^ |
            Проголосовать: нравится +24 Проголосовать: не нравится

          Господи, это и есть решение для N <= 10^15

          • »
            »
            »
            »
            »
            »
            9 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Спасибо большое. Но как найти a и b ?

            • »
              »
              »
              »
              »
              »
              »
              9 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится +18 Проголосовать: не нравится

              Перебор A.
              B = N — A.
              Быстро найдется такое A, что N-A простое.

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

Есть теория что любое четное число можно представить в виде суммы двух простых чисел. Используя это знание можно решить задачу. вот код

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Выводишь 5 двоек если N четное или 4 двойки и одну тройку,если иначе.Минусуешь от изначального значения N,10 если оно четное или 11 ,если иначе.После используя гипотезу Гольдбаха представляешь число в виде двух простых

вот ссылка на гипотезу

вот код