• <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 閱讀(338) 評論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithmMathematics

            亚洲性久久久影院| 91超碰碰碰碰久久久久久综合| 国产人久久人人人人爽| 99蜜桃臀久久久欧美精品网站| 久久精品综合一区二区三区| 99久久www免费人成精品| 久久精品国产网红主播| 国产精品久久99| 99久久精品免费国产大片| 国产成人久久精品二区三区| 久久综合狠狠色综合伊人| 久久99精品久久久久久野外| 久久人人爽人人爽AV片| 久久久久免费精品国产| 国内精品久久久久影院日本 | 久久天堂电影网| 精品久久久无码21p发布| 午夜不卡久久精品无码免费| 无码伊人66久久大杳蕉网站谷歌| 97精品国产97久久久久久免费 | 国产精品免费福利久久| 精品久久久久久中文字幕| 国产午夜福利精品久久| 欧美与黑人午夜性猛交久久久| 午夜精品久久久内射近拍高清| 亚洲欧美日韩精品久久亚洲区 | 欧美大香线蕉线伊人久久| 久久成人精品视频| 亚洲欧洲精品成人久久曰影片 | 影音先锋女人AV鲁色资源网久久| 人妻少妇久久中文字幕| 国产高潮国产高潮久久久91| 性做久久久久久久久浪潮| 2021久久国自产拍精品| 色偷偷91久久综合噜噜噜噜| 99国产精品久久| 久久国产色av免费看| 国产精品成人精品久久久| 人妻无码中文久久久久专区| 久久亚洲精品无码观看不卡| 久久精品成人国产午夜|