1. Си / Говнокод #12197

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    #include<stdio.h>
    #include<math.h>
     
    int main()
    {
    long long a1,a2,a3,a4,t,p,l,m1,m,d1,d2,d3,d4,c1,c2,c3,c4,n,r;
    double po;
     
    m=1000000006;
    scanf("%lld",&t);
    while(t--)
         {scanf("%lld",&n);
         a1=1;a2=1;a3=1;a4=0;
         d1=1;d2=0;d3=0;d4=1;
         
         p=n-2;
    while(p>0)
         {    if(p%2!=0)
            { c1=((d1*a1)%m+(d3*a3)%m);
              c2=((d1*a2)%m+(d2*a4)%m);
              c3=((d3*a1)%m+(d4*a3)%m);
              c4=((d3*a2)%m+(d4*a4)%m);
              d1=c1;d2=c2;d3=c3;d4=c4;
            }
              c1=((a1*a1)%m+(a2*a3)%m);
              c2=((a1*a2)%m+(a2*a4)%m);
              c3=((a3*a1)%m+(a4*a3)%m);
              c4=((a3*a2)%m+(a4*a4)%m);
              a1=c1;a2=c2;a3=c3;a4=c4;
              p=p/2;
         }
     l=((d1*1)%m+(d2*1)%m)%m;m1=((d3*1)%m+(d4*1)%m)%m;
     
    po=pow(2,l);
    r=llrintl(po)%(m+1);
     
     
    printf("%lld\n",r);
    }
    return 0;
       }

    Запостил: Fai, 26 Ноября 2012

    Комментарии (17) RSS

    • Что-то у тебя с форматированием. Наверное после изучения Хаскеля испортилось. Неужели пробелы теперь ненавидишь (в хаски основной разделительный элемент).
      Ответить
      • Зато полно лишних круглых скобок c1=((d1*a1)%m+(d3*a3)%m). Видимо лиспа начитался.
        Ответить
      • Это не мой код. Форматирование было сохранено.
        Ответить
    • > double po
      > r=llrintl(po)%(m+1)

      > long long int llrint(double x);
      > long long int llrintf(float x);
      > long long int llrintl(long double x);

      Не айс.
      Ответить
    • Кстати, а что это в целом? Поиск чисел фибоначчи по модулю m (ляпнул наугад увидев матрицу [[1,1],[1,0]]?

      P.S. Строчки с pow и llrintl портят всю картину...
      Ответить
      • Я сам не вкурсе, наткнулся в интернетах.
        Ответить
        • Не, ну вроде как фибоначчи. А вот зачем потом 2 возводят в степень результата... Может быть какая-то задачка с project euler?
          Ответить
          • Возможно. Нужно запустить, посмотреть.
            Ответить
            • 2 ^ (fib(p) mod m) mod (m+1)

              Как-то так. Нагуглить саму задачку не удалось.
              Ответить
              • Загляни кстати в шахматы, я там довольно много добавил.
                Ответить
                • Насрал? Я вот тоже думал сходить.
                  Сорри за толстоту троллинга. Жир начал стекать с моей клавиатуры.
                  Ответить
                  • Последние функции makeMove(low/withNoChecks) вообще кал. Воняет, но имеет нормальный интерфейс и работает, так что пока продолжу писать код, а рефакторингом займусь позже.

                    А вообще надеюсь bormand все почистит.
                    Ответить
                    • > А вообще надеюсь bormand все почистит.
                      Не надейся ;)
                      Ответить
                • Что-то у тебя гитхаб распидорасило. В коммитах есть изменения в Position.hs, а если пытаешься посмотреть файл - там всего 3 строчки.

                  P.S. Если запуллить репу к себе - все ок.

                  > file 3 lines (2 sloc) 4.241 kb
                  Гитхаб не может в хаскель.
                  Ответить
                  • И правда. А если там нажать Edit или Blame, то оставшиеся ~100 строк появляются.

                    Неужели githab не может в
                    Ответить

    Добавить комментарий