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

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

yahooo хочет знать, можно ли (если можно, то как) находить произведение последовательного ряда чисел фиббоначи, т.е F1F2F3...Fn за время ассимптотически небольшее O(logN)? (N не больше инта)

я нашел много информации по числам фибоначчи, но так и не нашел, как это делать =(

UPD: конечно же, произведение должно быть найдено по модулю, который может быть любым, неменьше 2 и не превосходит инта

UPD2: ну грубо говоря, мне нужно находить не это, а то, с какого момента это произведение по модулю равно нулю... может так будет проще

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

»
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Оно может быть достаточно большим. Вам длинное произведение нужно?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится
    по модулю конечно, просто если я буду знать как это делать без модуля, модуль, думаю, прикрутить будет несложно
    • »
      »
      »
      13 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится +3 Проголосовать: не нравится

      Фишка в том, что без модуля их там всего порядка пары тысяч первых значений в память влезет.

      Без модуля - тоже важно какой модуль. Точнее, важно, имеет ли он вид 4k + 1, или 4k + 3. По какому модулю?

      UPD: Ой-ой-ой. Какой я бред сказал. Во-первых, я, конечно, имел в виду, необходимость того, что 5 является квадратичным вычетом. Мне показалось, что тогда из того, что , можно вывести что-то хорошее. Похоже, что нет.

      На самом деле, можно подумать на тему того, что есть такое (a + b)(a2 + b2)...(an + bn) после раскрытия скобок, и как его быстро посчитать. Быстрее чем за линию ничего в голову пока не приходит Можно попытаться учитывать то, что ab = 1 в нашем случае.

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        по любому (имеет любой вид, может быть простым, а может и не быть)
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        если имеет то ответ 0?
        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Конечно нет. Я намудрил чуток :-)
          • »
            »
            »
            »
            »
            »
            13 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится -8 Проголосовать: не нравится

            Наверно так Натуральное число N является числом Фибоначчи тогда и только тогда, когда 5N2 + 4 или 5N2 − 4 является квадратом.

            Следовательно если модуль имеет такой вид то ответ 0. Но если модуль не имеет такой вид?
            • »
              »
              »
              »
              »
              »
              »
              13 лет назад, # ^ |
                Проголосовать: нравится +21 Проголосовать: не нравится
              Стоп. При чём здесь этот факт? Вы просто пытаетесь сказать, что если модуль - число Фиббоначчи, то начиная с некоторого момента произведение - ноль.
              Это похвально :-)
»
13 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится
Здесь смотрели?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится
    В общем, судя по вот этому, ничего в этой области полезного открыто не было. Я быстро проглядел пару references оттуда, там только применения.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну я это и имел в виду, что в любом случае, необходим факториал по модулю, а это никак за логарифм не делается.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится
    ну тут как я понимаю некоторые свойства чисел фибоначчи
»
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Аа.. Ну так бы и сказали. Тогда вам копать в сторону периода Пизано.

Вот, например, хороший абзац:

Для простого числа p и целого числа k ⩾ 1 выполняется . Более того, для всех точных степеней простых чисел от 1 до миллиона выполнено равенство . Но до сих пор неизвестно, на всегда ли выполнено это равенство, и существуют ли такое p, что π(p2) = π(p).

До миллиона-то вам за глаза хватит.

Дальше воспользоаться мультипликативностью. А дальше научиться считать π(p). А это эквивалентно тому, что , т. е. φ2n = 1,  а это уже задача поиска порядка числа по простому модулю. Это уже баян.


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

    да я читал это, но 2 вопроса:

    1) только до миллиона, а простые в инте могут быть и довольной большие (~2млрд), ну допустим, что для 2млрд это выполняется я еще готов поверить, но

    2) как я узнаю допустим pi(p)? тем более если p~2млрда?

    пока писал это, ты проапдейтил свой коммент, в связи с этим, что такое мультипликативность?

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

      Читаем мой пост чуть ниже - я для простого числа дописал.

      Для взаимно простых a и b π(ab) = [π(a);π(b)]. Вот такая тут мультипликативность.

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

        блин, такое страшное слово, означает этот факт, ну хорошо, спасибо)

        честно говоря не очень понял последнее, ну сам попытаюсь найти, спасибо за помощь)

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А как можно быстрее чем за  O(sqrt(mod)*log(mod) ) искать порядок числа по простому модулю?

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

Cреди k+1 последовательных чисел Фибоначчи найдется число, делящееся на k, для любого простого k.

Вас устроит перебор k+1 первых чисел?

UPD: Извиняюсь, O(logN) здесь не видно пока, но думаю, копать надо в этом направлении.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -16 Проголосовать: не нравится
    ну если это за время ассимптотически небольшее O(logN), то да!
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    k = 6. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89. 11последовательных чисел, и как-то ни одно на 6 не делится.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      k должно быть простым.
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Если k - простое, то это очевидно из написанного выше  Zlobober (период Пизано).
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      блин, точно, я че то не подумал даже....

      у какой-то у товарища фальшивый Капитан Очевидность

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

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

    если конечно из личного интереса, то пожалуйста

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

в связи с этой темой:

читаю на википедии эту статью, одно из свойств:

Если p — нечётное простое число, то π(p) является делителем , p - (p/5), где (p/5)символ Лежандра.

проверяю для p = 3:

(3/5)=-1, если я не ошибся

p - (p/5) = 3 - (-1) = 4

π(3) = 8, но как так, по свойству π(3)должно являться делителем 4х!

я где то натупил?

извините за оформление...

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Хм, похоже там опечатка - для нескольких других p тоже получается, что п(p) делится на p - (p/5)
  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

    Back

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

      то, спасибо за ссылку конечно, но я хотел бы все таки сам решить, а там уже все решение как я понял

      P.S. теперь я просто понимаю, что ту задача которая передо мной стоит (не так что в теме), я могу и сам решить покопавшись немного в каких-либо статьях

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    да там опечатка, должно быть не является делителем, а наоборот делится на p - (p/5). это следует из того, что написано в примечании, если я ничего под вечер не перепутал
    п.с. странно что факт в примечании вынесли в примечания, т.к. он нифига не примичание, автор этой статьи позиционировал его как основной результат, известный про период писано :)
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      кстати, по данным этой таблицы, даже это неверно, например для p = 47, период 32, и 48 не является делителем 32
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    пользуясь случаем обсуждения чисел Фибоначчи, хочу спросить, видел ли кто доказательство утверждения "Для всех положительных целых чисел m справедливо неравенство "?
    оно очень похоже на верное, но его доказательство должно быть нетривиальным и довольно интересным, потому что вот здесь была задача про период Писано и не одна из докладывавших команд не доказала линейность
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится -27 Проголосовать: не нравится
      я знаю примерно доказательство (по крайне мере, я так думаю), но мне лень писать, ибо у меня получается оно довольно длинное...(
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Задача с идущего контеста.
*full of sarcasm*Но спасибо, что помогли человеку ее решить.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А что за контест?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -39 Проголосовать: не нравится

    ну даже если она и отсюда,

    1) я же не попросил конкретно решить ее, тут еще и свести надо

    2) если бы я хотел я бы посмотрел по ссылке и думаю, у меня было бы 160 по ней уже (судя по тому что, этот сайт вроде международный форум АСМ программистов)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      1. Как будто это так сложно, свести ее к той что на контесте.
      2. От того, кто клянчил у других решение задачи на GCJ вполне ожидаемый ответ. Но ведь никто не будет спорить что это как минимум некрасиво - просить подсказку на задачу с идущего контеста.
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится -34 Проголосовать: не нравится

        согласись, я мог бы просто банально решение найти, это было бы еще более некрасивее

        (хочешь верь, хочешь нет) но ничего нового я не узнал, сколько мучался целый день, со свойствами в вики, тестинг раунд написал, снова начал мучаться и что-то стало получаться... 

        по крайней мере я себя виноватым не считаю по 2 вышеуказаным причинам...