• 矩阵专题


    先看道板子题

    初始化 F1 F2 F3 进行n-1次加速以后 变成 Fn Fn+1 Fn+2

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int mod=1e9+7;
    struct node{
    	ll m[5][5];
    }ans,base;
    int T;
    node mul(node a,node b){
    	node res;
    	memset(res.m,0,sizeof(res.m));
    	for(int i=1;i<=3;i++)
    	for(int j=1;j<=3;j++)
    	for(int k=1;k<=3;k++)
    	res.m[i][j]=(res.m[i][j]+(a.m[i][k]*b.m[k][j])%mod)%mod;
    	return res;
    }
    ll fast_mi(int b){
    	node res;
    	memset(res.m,0,sizeof(res.m));
    	for(int i=1;i<=3;i++)
    	res.m[i][i]=1;
    	memset(base.m,0,sizeof(base.m));
    	base.m[1][1]=base.m[1][3]=base.m[2][1]=base.m[3][2]=1;
    	while(b){
    		if(b&1)res=mul(res,base);
    		base=mul(base,base);
    		b>>=1;
    	}
    	return res.m[1][1];
    }
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	int n;
    	cin>>n;
    	 cout<<fast_mi(n-1)<<endl;
    }
    

    同理来计算斐波那契数

    有个有趣的公式 gcd(f(n),f(m))=f(gcd(n,m))

    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int mod=1e9+7;
    struct node{
    	ll m[5][5];
    }ans,base;
    int T;
    node mul(node a,node b){
    	node res;
    	memset(res.m,0,sizeof(res.m));
    	for(int i=1;i<=2;i++)
    	for(int j=1;j<=2;j++)
    	for(int k=1;k<=2;k++)
    	res.m[i][j]=res.m[i][j]+a.m[i][k]*b.m[k][j];
    	return res;
    }
    ll fast_mi(int b){
    	node res;
    	memset(res.m,0,sizeof(res.m));
    	for(int i=1;i<=2;i++)
    	res.m[i][i]=1;
    	memset(base.m,0,sizeof(base.m));
    	base.m[1][1]=base.m[1][2]=base.m[2][1]=1;
    	while(b){
    		if(b&1)res=mul(res,base);
    		base=mul(base,base);
    		b>>=1;
    	}
    	return res.m[1][1];
    }
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	int n;
    	cin>>n;
    	 cout<<fast_mi(n-1)<<endl;
    }
    
  • 相关阅读:
    3D Slicer 体系结构2
    3D Slicer 体系结构1
    3D Slicer FAQ-3
    3D Slicer FAQ-2
    3D Slicer FAQ-1
    3D Slicer 编译、调试、规范化的开发
    3D Slicer 开发者必晓ABC
    3D Slicer 模块管理(二)场景视图、体数据、体绘制
    3D Slicer 模块管理(一)颜色、DCM、数据、模型、注释
    3D Slicer 数据与帮助
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/16178445.html
Copyright © 2020-2023  润新知