文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ZZULI 1478 不死兔子 - 矩阵连乘求超大斐波那契数

ZZULI 1478 不死兔子 - 矩阵连乘求超大斐波那契数

时间:2011-04-20  来源:7k

#include <iostream>
#define M 2011403
using namespace std;
struct mat{
        int a[2][2];
};
mat mul(mat x,mat y) {
        mat ret;
        int i,j,k;
        for(i = 0; i < 2; ++ i)
        for(j = 0; j < 2; ++ j){
                long c = 0;
                for(k = 0; k < 2; ++ k)
                c = (c + (long long )x.a[i][k] * y.a[k][j] % M) % M;
                ret.a[i][j] = c;
        }
        return ret;
}
int fib(int n){
        if(n <= 1) return 1;
        mat F,t;
        F.a[0][0] = 1;F.a[0][1] = 1;
        F.a[1][0] = 1;F.a[1][1] = 0;
        t=F; 
        n-=2;
        while(n){
                if(n & 1) F = mul(F,t);
                t = mul(t,t);
                n >>= 1;
        }
        return (F.a[0][0] + F.a[0][1] ) % M;
}
int main() {
        int n,N;
        cin>>N;
        while (N--) {
                cin>>n;
                cout<<fib(n)<<endl;
        }
        return 0;
}
相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载