• AC日记——3的幂的和 51nod 1013


    3的幂的和

    思路;

      矩阵快速幂;

        sn-1      3 1        sn

          *          =

      1      0 1     1

    来,上代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define mod 1000000007
    
    struct NodeType {
        long long a[3][3];
    };
    struct NodeType ans;
    
    long long n;
    
    struct NodeType mul(NodeType pos)
    {
        NodeType res;
        res.a[1][1]=0,res.a[1][2]=0;
        res.a[2][1]=0,res.a[2][2]=0;
        for(int i=1;i<=2;i++)
        {
            for(int j=1;j<=2;j++)
            {
                for(int v=1;v<=2;v++)
                {
                    res.a[i][j]=(res.a[i][j]+(pos.a[i][v]*pos.a[v][j])%mod)%mod;
                }
            }
        }
        return res;
    }
    
    void poww(int mi)
    {
        NodeType pos;
        pos.a[1][1]=3,pos.a[1][2]=1;
        pos.a[2][1]=0,pos.a[2][2]=1;
        while(mi>0)
        {
            struct NodeType res;
            res.a[1][1]=0,res.a[1][2]=0;
            res.a[2][1]=0,res.a[2][2]=0;
            if(mi&1)
            {
                for(int i=1;i<=2;i++)
                {
                    for(int j=1;j<=2;j++)
                    {
                        for(int v=1;v<=2;v++)
                        {
                            res.a[i][j]=(res.a[i][j]+(ans.a[i][v]*pos.a[v][j])%mod)%mod;
                        }
                    }
                }
                ans=res;
            }
            pos=mul(pos),mi=mi>>1;
        }
    }
    
    int main()
    {
        scanf("%lld",&n);n--;
        ans.a[1][1]=3,ans.a[1][2]=1;
        ans.a[2][1]=0,ans.a[2][2]=1;
        poww(n);
        cout<<(ans.a[1][1]+ans.a[1][2])%mod;
        return 0;
    }
  • 相关阅读:
    企业生产环境不同业务linux系统分区方案
    linux 文件 s 权限
    shell中的命令与特殊符号
    Linux数组基础
    shell脚本学习(1)
    文件的压缩与打包
    Linux 磁盘管理基础命令df,du,fdisk,mke2fs
    mkpasswd的使用
    P1080 国王游戏
    P1315 观光公交
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6746831.html
Copyright © 2020-2023  润新知