ACdream - 1060 递推数(矩阵+循环节)
https://vjudge.net/problem/71677/origin
已知A(0) = 0 , A(1) = 1 , A(n) = 3 * A(n-1) + A(n-2) (n ≥ 2)
求 A(A(A(A(N)))) Mod (1e9 + 7)
Input
第一行一个整数 T (T ≤ 10000) 代表数据组数
每组数据占一行,一个整数 n (1 ≤ n ≤ 1e12)
Output
对于每组测试数据输出一个整数。
Sample Input
4
1
23574
27870
913
Sample Output
1
0
0
1
参考:http://blog.csdn.net/u013050857/article/details/44748691
循环节:当对一个数取摸的操作中,必然会出现循环节的问题。
此题看嵌套的层数,计算出每层循环节长度。
第一次是MOD1=1000000007 找出循环节是222222224
第二次是MOD2=222222224,找出循环节183120
第三次是MOD3=183120,找出循环节240
找循环节暴力找就好,当出现与前两项相同的两项时,则开始新一轮的循环,写个程序算一算。
然后构造矩阵。这题矩阵是2*2的,比较简单,详情看代码
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
#define LL long long
const long long mod1=1e9+;//循环节
const long long mod2=;
const long long mod3=;
const long long mod4=;
struct Matrix
{
long long mapp[][];
};
Matrix p= {,,,}; //左边矩阵
Matrix p1= {,,,};//公式矩阵
Matrix unin= {,,,};//单位矩阵
Matrix powmul(Matrix a,Matrix b,long long mod)
{
Matrix c;
for(int i=; i<; i++)
for(int j=; j<; j++)
{
c.mapp[i][j]=;
for(int k=; k<; k++)
c.mapp[i][j]+=(a.mapp[i][k]*b.mapp[k][j])%mod;
c.mapp[i][j]%=mod;
}
return c;
} Matrix powexp(long long n,long long mod)//关键点
{
Matrix m=p1,b=unin;
while(n)
{
if(n&) b=powmul(b,m,mod);
n>>=;
m=powmul(m,m,mod);
}
return powmul(p,b,mod);
} long long n;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
Matrix ans;
ans=powexp(n,mod4);//从里面往外面推出
ans=powexp(ans.mapp[][],mod3);
ans=powexp(ans.mapp[][],mod2);
ans=powexp(ans.mapp[][],mod1);
printf("%lld\n",ans.mapp[][]);
}
return ;
}
ACdream - 1060 递推数(矩阵+循环节)的更多相关文章
- Luogu T7152 细胞(递推,矩阵乘法,快速幂)
Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...
- CJOJ 1331 【HNOI2011】数学作业 / Luogu 3216 【HNOI2011】数学作业 / HYSBZ 2326 数学作业(递推,矩阵)
CJOJ 1331 [HNOI2011]数学作业 / Luogu 3216 [HNOI2011]数学作业 / HYSBZ 2326 数学作业(递推,矩阵) Description 小 C 数学成绩优异 ...
- Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂)
Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂) Description 广义的斐波那契数列是指形如\[A_n=p*a_{n-1}+q*a_{n-2}\]的数列.今给定数列的两系数p和q, ...
- hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形 ...
- [Lonlife1031]Bob and Alice are eating food(递推,矩阵快速幂)
题目链接:http://www.ifrog.cc/acm/problem/1031 题意:6个水果中挑出n个,使得其中2个水果个数必须是偶数,问有多少种选择方法. 设中0代表偶数,1代表奇数.分别代表 ...
- [HDOJ2604]Queuing(递推,矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 递推式是百度的,主要是练习一下如何使用矩阵快速幂优化. 递推式:f(n)=f(n-1)+f(n- ...
- HDU - 2604 Queuing(递推式+矩阵快速幂)
Queuing Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU5950 Recursive sequence 非线性递推式 矩阵快速幂
题目传送门 题目描述:给出一个数列的第一项和第二项,计算第n项. 递推式是 f(n)=f(n-1)+2*f(n-2)+n^4. 由于n很大,所以肯定是矩阵快速幂的题目,但是矩阵快速幂只能解决线性的问题 ...
- hdu 5950 Recursive sequence 递推式 矩阵快速幂
题目链接 题意 给定\(c_0,c_1,求c_n(c_0,c_1,n\lt 2^{31})\),递推公式为 \[c_i=c_{i-1}+2c_{i-2}+i^4\] 思路 参考 将递推式改写\[\be ...
随机推荐
- bzoj 1086: [SCOI2005]王室联邦 (分块+dfs)
Description “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不 ...
- MT【277】华中科技大学理科实验班选拔之三次方程
(2015华中科技大学理科实验班选拔)已知三次方程$x^3+ax^2+bx+x=0$有三个实数根.(1)若三个实根为$x_1,x_2,x_3$,且$x_1\le x_2\le x_3,a,b$为常数, ...
- Hdoj 1789 Doing Homework again 题解
Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of h ...
- Android多种方法显示当前日期和时间
文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...
- 「SCOI2014」方伯伯运椰子 解题报告
「SCOI2014」方伯伯运椰子 可以看出是分数规划 然后我们可以看出其实只需要改变1的流量就可以了,因为每次改变要保证流量守恒,必须流成一个环,在正负性确定的情况下,变几次是无所谓的. 然后按照套路 ...
- VSCode设置Tab键为4个空格
升级之后莫名蛋疼,Tab键变成了8个,每次缩进之后都要格式化一下,比较麻烦,所以来一篇设置: GIF演示整个过程 分步骤走: 设置一下 设置为4个空格 最后多一句嘴,Python3开始官方不建议使用制 ...
- tyvj/joyoi 1043 表达式计算4
这题怎么这么毒瘤... 一开始我想转后缀表达式来计算,后来发现有负数...弃疗. 递归求解又发现会有多余括号,我觉得不行... 实在是毒瘤啊! #include <cstdio> #inc ...
- django 通过ajax完成邮箱用户注册、激活账号
一.图片验证码 django-simple-captcha配置 1.在pycharm中,File====>Settings====>Project:项目名====>Project I ...
- struts2 UI标签 和 主题
四.Struts2的UI标签和主题 1.Struts2中UI标签的优势 自动的数据回显和错误提示功能 自带的简单样式和排版 2.表单标签的通用属性 说明:UI标签中value的取值一般都是字符串. 2 ...
- 苹果电脑利用wget总是会出现无法建立 SSL 连接的问题
在做迁徙学习的过程中,需要下载已经训练好的Inception_v3模型,首先我们为了将下载的模型保存到指定的地方,我们需要利用 wget -P 想要保存的目录 模型的网址,例如 wget -P /Vo ...