记录编号 584815 评测结果 AAAAAAAAAA
题目名称 数学序列 最终得分 100
用户昵称 Gravatar┭┮﹏┭┮ 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2023-11-15 21:30:30 内存使用 0.00 MiB
显示代码纯文本
#include <bits/stdc++.h> 
using namespace std;
//矩阵快速幂 // 
const int N = 2,mod = 7;
int a,b,n;
struct made{
    int a[N][N],n,m;
    void clear(){n = m = 0;memset(a,0,sizeof(a));}
    made operator * (const made &x)const{
        made y;y.clear();
        y.n = n,y.m = m;
        for(int i = 0;i < n;i++)
            for(int j = 0;j < m;j++)
                for(int k = 0;k < m;k++)
                    y.a[i][j] = (y.a[i][j] + (a[i][k] * x.a[k][j]) % mod) % mod; 
        return y;
    }//重制*符号 
}c,f;
int main(){
    freopen("number1.in","r",stdin);
    freopen("number1.out","w",stdout);
    while(cin>>a>>b>>n){
        c.clear();f.clear();
        c.n = 1,c.m = 2,f.n = f.m = 2;
        if(n <= 2){
            printf("1\n");
            continue;
        }
        c.a[0][0] = 1,c.a[0][1] = 1;
        f.a[0][0] = a,f.a[0][1] = 1;
        f.a[1][0] = b;
        n -= 2;
        while(n){
            if(n & 1)c = c * f;
            f = f * f;
            n >>= 1;
        }
        printf("%d\n",c.a[0][0]);
    }
    
    return 0;
    
}