• <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 閱讀(346) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): ACMAlgorithmMathematics

            一级做a爰片久久毛片免费陪| 久久精品国产亚洲av麻豆色欲| 蜜臀av性久久久久蜜臀aⅴ| 欧美精品乱码99久久蜜桃| 色狠狠久久AV五月综合| 久久久久亚洲av无码专区| 久久夜色tv网站| 久久天天躁狠狠躁夜夜不卡| 久久精品国产一区二区三区日韩| 午夜视频久久久久一区| 久久精品这里热有精品| 色天使久久综合网天天| 一本色道久久综合亚洲精品| 久久综合给合综合久久| 亚洲一区中文字幕久久| 中文字幕无码精品亚洲资源网久久 | 综合久久给合久久狠狠狠97色 | 国产精品天天影视久久综合网| 久久久久国产一级毛片高清板| 国内精品久久久久| 无码人妻久久一区二区三区蜜桃 | 亚洲精品久久久www| 国产精品久久久久久影院| 久久午夜夜伦鲁鲁片免费无码影视| 久久久久久综合一区中文字幕| 久久精品免费一区二区| 国产69精品久久久久99| 久久亚洲国产精品一区二区| 无码八A片人妻少妇久久| 国产精品一区二区久久精品无码| 久久久亚洲欧洲日产国码aⅴ | 久久精品免费网站网| 国产人久久人人人人爽| 精品久久久久久成人AV| 久久国产亚洲精品| 国内高清久久久久久| 久久久久国产亚洲AV麻豆| 久久激情亚洲精品无码?V| 中文字幕久久欲求不满| 久久综合狠狠色综合伊人| 国产精品久久久久久一区二区三区|