• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            FIB Query, 1007, 2011 Multi-University Training Contest 10

            FIB Query

            TimeLimit: 2 Second   MemoryLimit: 64 Megabyte

            Totalsubmit: 733   Accepted: 87  

            Description

            We all know the definition of Fibonacci series: fib[i]=fib[i-1]+fib[i-2],fib[1]=1,fib[2]=1.And we define another series P associated with the Fibonacci series: P[i]=fib[4*i-1].Now we will give several queries about P:give two integers L,R, and calculate ∑P[i](L <= i <= R).

            Input

            There is only one test case.
            The first line contains single integer Q – the number of queries. (Q<=10^4)
            Each line next will contain two integer L, R. (1<=L<=R<=10^12)

            Output

            For each query output one line.
            Due to the final answer would be so large, please output the answer mod 1000000007.


            Sample Input

            2
            1 300
            2 400


            Sample Output

            838985007
            352105429


            Source

            [p][/p]




            p[1] + p[2] + ... + p[n] = f[1]^2 + f[2]^2 + ... + f[2*n-1]^2 + f[2*n]^2 = f[2*n] * f[2*n+1]


             1 #include <iostream>
             2 #include <cstring>
             3 
             4 using namespace std;
             5 
             6 #define  MOD  1000000007
             7 
             8 typedef  long long  I64;
             9 
            10 void getF( I64 n, I64 *fn, I64 *fnp1 ) {
            11         I64 m[ 2 ][ 2 ], t[ 2 ][ 2 ], p[ 2 ][ 2 ];
            12         int i, j, k;
            13 
            14         m[ 0 ][ 0 ] = 1;
            15         m[ 0 ][ 1 ] = 0;
            16         m[ 1 ][ 0 ] = 0;
            17         m[ 1 ][ 1 ] = 1;
            18 
            19         p[ 0 ][ 0 ] = 1;
            20         p[ 0 ][ 1 ] = 1;
            21         p[ 1 ][ 0 ] = 1;
            22         p[ 1 ][ 1 ] = 0;
            23 
            24         while ( n != 0 ) {
            25                 if ( n & 1 ) {
            26                         for ( i = 0; i < 2++i ) {
            27                                 for ( j = 0; j < 2++j ) {
            28                                         t[ i ][ j ] = 0;
            29                                         for ( k = 0; k < 2++k ) {
            30                                                 t[i][j] = (t[i][j]+m[i][k]*p[k][j]) % MOD;
            31                                         }
            32                                 }
            33                         }
            34                         for ( i = 0; i < 2++i ) {
            35                                 for ( j = 0; j < 2++j ) {
            36                                         m[ i ][ j ] = t[ i ][ j ];
            37                                 }
            38                         }
            39                 }
            40 
            41                 n >>= 1;
            42                 for ( i = 0; i < 2++i ) {
            43                         for ( j = 0; j < 2++j ) {
            44                                 t[ i ][ j ] = 0;
            45                                 for ( k = 0; k < 2++k ) {
            46                                         t[i][j] = (t[i][j]+p[i][k]*p[k][j]) % MOD;
            47                                 }
            48                         }
            49                 }
            50                 for ( i = 0; i < 2++i ) {
            51                         for ( j = 0; j < 2++j ) {
            52                                 p[ i ][ j ] = t[ i ][ j ];
            53                         }
            54                 }
            55         }
            56         *fnp1 = m[ 0 ][ 0 ];
            57         *fn   = m[ 1 ][ 0 ];
            58 }
            59 
            60 void getP( I64 n, I64 *pn ) {
            61         I64 fn, fnp1;
            62         n = n + n;
            63         getF( n, &fn, &fnp1 );
            64         *pn = ( fn * fnp1 ) % MOD;
            65 }
            66 
            67 int main() {
            68         int q;
            69         I64 le, ri, pl, pr;
            70         cin >> q;
            71         while ( q-- > 0 ) {
            72                 cin >> le >> ri;
            73                 getP( le-1&pl );
            74                 getP( ri, &pr );
            75                 cout << ( ( pr + MOD - pl ) % MOD ) << "\n";
            76         }
            77         return 0;
            78 }
            79 

            posted on 2011-08-11 17:21 coreBugZJ 閱讀(355) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM 、Algorithm 、Mathematics

            国内精品久久久久久久亚洲| 久久综合久久性久99毛片| 性高湖久久久久久久久| 97久久精品无码一区二区天美 | 99久久精品免费看国产一区二区三区| 99久久免费国产精品特黄| 69久久夜色精品国产69| 色偷偷88欧美精品久久久| 国产精品9999久久久久| 午夜精品久久久久久影视777| 精品久久人妻av中文字幕| 亚洲欧洲精品成人久久奇米网| 久久精品国产亚洲av影院| 狠狠色丁香婷婷久久综合五月| 日本精品久久久中文字幕| 色婷婷久久综合中文久久蜜桃av| 久久久久免费视频| 精品久久久久一区二区三区| 久久久精品人妻一区二区三区四| 日韩AV毛片精品久久久| 久久99精品国产麻豆不卡| 久久青青草原国产精品免费 | 国产精品美女久久久免费| 国产精品对白刺激久久久| 青青草原精品99久久精品66| 狠狠色丁香婷婷久久综合| 伊人久久大香线蕉综合热线| 亚洲国产成人精品女人久久久| 99久久精品国产一区二区蜜芽| MM131亚洲国产美女久久| 午夜精品久久久久久99热| 麻豆精品久久久久久久99蜜桃| 一本久久精品一区二区| 午夜精品久久久久成人| 四虎影视久久久免费观看| 午夜精品久久久久成人| 久久精品国产亚洲AV香蕉| 亚洲国产精品无码久久久秋霞2| 人妻少妇久久中文字幕一区二区| 伊人久久综合精品无码AV专区| 久久亚洲日韩精品一区二区三区|