#include <bits/stdc++.h>
using namespace std; #define int long long
const int mod = 7; struct matrix {
int a[5][5]={};
int n,m;
}; matrix I(int n) {
matrix ret;
ret.n=n;
ret.m=n;
for(int i=1;i<=n;i++) ret.a[i][i]=1;
return ret;
} matrix operator * (matrix a, matrix b) {
matrix ret;
ret.n = a.n;
ret.m = b.m;
for(int i=1;i<=ret.n;i++) {
for(int j=1;j<=ret.m;j++) {
for(int k=1;k<=a.m;k++) {
ret.a[i][j] += a.a[i][k] * b.a[k][j];
ret.a[i][j] %= mod;
ret.a[i][j] += mod;
ret.a[i][j] %= mod;
}
}
}
return ret;
} matrix qpow(matrix p, int q) {
return ((q&1)?p:I(2)) * (q?qpow(p*p,q/2):I(2));
} signed main() {
matrix T;
T.n=2; T.m=2;
int a,b,n;
cin>>a>>b>>n;
T.a[1][1]=a; T.a[1][2]=b;
T.a[2][1]=1;
T=qpow(T,n-2);
matrix A;
A.n=2; A.m=1;
A.a[1][1]=1; A.a[2][1]=1;
if(n==1) cout<<1<<endl;
else cout<<(T*A).a[1][1];
}

[51nod 1126] 求递推序列的第N项 - 矩阵乘法的更多相关文章

  1. 51nod 1126 求递推序列的第N项

    1126 求递推序列的第N项  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f( ...

  2. 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释

    题目: 看起来比较难,范围10^9 O(n)都过不了,但是仅仅是看起来.(虽然我WA了7次 TLE了3次,被自己蠢哭) 我们观察到 0 <= f[i] <= 6 就简单了,就像小学初中学的 ...

  3. 51nod 1126 - 求递推序列的第N项 - [找规律]

    题目链接:https://cn.vjudge.net/problem/51Nod-1126 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + ...

  4. 51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126 http://acm.hdu.edu.cn/showproblem ...

  5. 51Nod 1126 求递推序列的第N项(矩阵快速幂)

    #include <iostream> #include <algorithm> #include <cmath> #define MOD 7 #define N ...

  6. 515Nod 1126 求递推序列的第n项【矩阵快速幂】

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  7. [51NOD1126]求递推序列的第n项(矩阵快速幂)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126 存在参数a,b为负数的情况.这时候要这么处理: 根据mo ...

  8. 51nod1126 求递推序列的第N项

    求递推序列的第N项 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的 ...

  9. 51nod1126 求递推序列的第N项【递推】

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

随机推荐

  1. 懒人必备,IntelliJ IDEA中代码一键生成

    之前有不少小伙伴问松哥微人事项目(https://github.com/lenve/vhr)使用的 MyBatis 逆向工程在哪里?其实旧版微人事当时没有使用逆向工程,是我自己手动敲出来的,当然手动敲 ...

  2. selenium 操作下拉处理

    操作下拉框处理 在网页中,有时候会遇到下拉框处理,这时候使用Webdriver提供的select类来处理. ##操作下拉框处理 #coding = utf-8 from selenium import ...

  3. WeChall_Prime Factory (Training, Math)Training: WWW-Robots (HTTP, Training)

    In this little training challenge, you are going to learn about the Robots_exclusion_standard.The ro ...

  4. CyclicBarrier与CountDownLatch区别

    阻塞与唤醒方式的区别 CountDownLatch计数方式 CountDownLatch是减计数.调用await()后线程阻塞.调用countDown()方法后计数减一,当计数为零时,调用await( ...

  5. False注入,以及SQL注入技巧总结

    title: False注入,以及SQL注入技巧总结 date: 2017-04-25 00:23:31 tags: ['SQL注入'] --- 利用False我们可以绕过一些特定的WAF以及一些未来 ...

  6. JS代码格式化时间戳

    一.[24小时制]yyyy-MM-dd HH:mm:ss new Date().toJSON() // 2019-12-13T13:12:32.265Z 通过上面的方法,基本就可以将日期格式化,然后稍 ...

  7. Multicast

    Source Specific Multicast (SSM) The multicast that you are probably familiar with (PIM sparse and de ...

  8. zabbix 自定义监控项报警给单独的人

    需求就是某个交换机的流量达到某个值后需要报警,但报警的内容不是发给所有的人,而是只发给特定的一个人,而其他的报警信息不能让他收到,他只能收到这一个报警项的报警 1:创建好用户定义好手机号 2:新增加一 ...

  9. git 指令笔记

    狂躁,太狂躁!!赶上过年,赶上自己的懒癌,12月底就学完的教程直到今天才整理笔记,中途沉默在游戏中..... 只给出Windows下git指令操作,推荐大家去廖雪峰前辈那里学习(百度搜索:廖雪峰的官方 ...

  10. pikachu-暴力破解漏洞解析

    本篇blog导航 ~暴力破解&暴力破解漏洞概述 ~基于表单的暴力破解实验 ~暴力破解的绕过和防范(验证码&Token)     ~验证码的基础知识     ~验证码绕过(on clie ...