蒟蒻80ptsWA求调!
查看原帖
蒟蒻80ptsWA求调!
760883
Yoimiyamwf楼主2023/8/16 16:38

第2和第10个点挂了 https://www.luogu.com.cn/record/121231102

感谢奆佬!!!

cpp
#include <bits/stdc++.h>
#define rint register ll
using namespace std;
typedef long long ll;
ll n;
const ll mod=1e9+7;
struct matrix{
    ll a[3][3];
}base={{{0},{0,0,1},{0,1,1}}},init={{{0},{0,1,1}}};
matrix operator *(matrix a,matrix b){
    matrix c={{{0},{0},{0}}};
    for(rint i=1;i<=2;i++){
        for(rint j=1;j<=2;j++){
            for(rint k=1;k<=2;k++){
                c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod;
            }
        }
    }
    return c;
}
inline matrix quick_pow(matrix a,ll b){
    matrix ans=a;
    b--;
    while(b){
        if(b&1) ans=ans*a;
        a=a*a;
        b>>=1;
    }
    return ans;
}
int main(){
    scanf("%d",&n);
    if(n==1||n==2){
        putchar('1');
        return 0;
    }
    cout<<(init*quick_pow(base,n-1)).a[1][1]%mod;
    return 0;
}
2023/8/16 16:38
加载中...