zoukankan      html  css  js  c++  java
  • Fibonacci[矩阵乘法]

    题目描述

    Fibonacci数列定义如下

    f[i]=f[i-2]+f[i-1]  i>2

    1          i=2

    1          i=1

    请你求Fibonacci数列的第n项

    输入

    一个整数 n (1<=n<=231-1)

    输出

    一个整数Fibonacci数列的第n项mod 32768的值

    提示

    代码

    #pragma GCC optimize(1)
    #pragma GCC optimize(2)
    #pragma GCC optimize(3)
    #pragma GCC optimize("Ofast")
    #pragma GCC optimize("inline")
    #include<bits/stdc++.h>
    #define rep(i,j,k) for(register int i=(j);i<=(k);++i)
    #define per(i,j,k) for(register int i=(j);i>=(k);--i)
    using namespace std;
    template<class T> inline void read(T &x)
    {
        x=0;
        register char c=getchar();
        register bool f=0;
        while(!isdigit(c))f^=c=='-',c=getchar();
        while(isdigit(c))x=x*10+c-'0',c=getchar();
        if(f)x=-x;
    }
    #define mod 32768
    int n;
    struct matrix{
        int a[11][11];
        inline matrix()
        {
            memset(a,0,sizeof(a));
        }
        inline matrix operator *(const matrix &b) const
        {
            matrix res;
            rep(i,1,2)
                rep(j,1,2)
                    rep(k,1,2)
                        res.a[i][j]=(res.a[i][j]+a[i][k]*b.a[k][j])%mod;
            return res;
        }
    }ans,base;
    inline void quickpow(register int k)
    {
        while(k)
        {
            if(k&1) ans=ans*base;
            base=base*base;
            k>>=1;
        }
    }
    int main()
    {
        read(n);
        if(n<=2)
            return puts("1"),0;
        base.a[1][1]=base.a[1][2]=base.a[2][1]=1;
        ans.a[1][1]=ans.a[1][2]=1;
        quickpow(n-2);
        printf("%d",ans.a[1][1]%mod);
        return 0;
    }
  • 相关阅读:
    pat1038. Recover the Smallest Number (30)
    pat1037. Magic Coupon (25)
    pat1036. Boys vs Girls (25)
    pat1031. Hello World for U (20)
    pat1030. Travel Plan (30)
    pat1028. List Sorting (25)
    pat1027. Colors in Mars (20)
    pat1017. Queueing at Bank (25)
    pat1025. PAT Ranking (25)
    Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/LJA001162/p/12817557.html
Copyright © 2011-2022 走看看