HDU 5950 Recursive sequence
T组数据, 每次给你 n A B 三个数字。
f[1] = A , f[2] = B , f[n] = 2 * f[n-2] + f[n-1] + n^4
思路: 啊啊啊啊啊 矩阵快速幂 一定先要去构造单位矩阵
式子1 : f[i] = 2 * f[i - 2] + f[i - 1] + i ^ 4
式子2 : f[i + 1] = 2 * f[i - 1] + f[i] + (i + 1) ^ 4
把(i + 1)^4 用二项式定理展开 (i + 1) ^ 4 = i ^ 4 + 4 * i ^ 3 + 6 * i ^ 2 + 4 * i + 1
然后把式子1写成式子2的样子
式子3 : f[i] = 2 * f[i - 2] + f[i - 1] + i ^ 4 + 0 * i ^ 3 + 0 * i ^ 2 + 0 * i + 0 *1
也就是说 f[i+1] 只的(i+1)的4次方 可以通过 i^3, i^2, i^1, 1 构造出来。
则 f[3] = 2 * f[1] + f[2] + 3^4 而3^4可以写成 (2 + 1)^4 = 1 * 2^4 + 4* i^3 + 6 * i^2 + 4 * i + 1
^ - ^ 然后xjb构造矩阵吧
上代码:
//
// HDU5950 - Recursive sequence.cpp
// 数论
//
// Created by Terry on 2018/9/29.
// Copyright © 2018年 Terry. All rights reserved.
//#include <stdio.h>
typedef long long LL;
long long read(){long long x = 0, f = 1;char ch=getchar();while(ch < '0' || ch > '9'){if(ch=='-') f = -1; ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0'; ch = getchar();}return x * f;
}
const int maxn = 7;
const long long mod = 2147493647;
struct Matrix{long long m[maxn][maxn];
}unit;
Matrix operator * (Matrix a, Matrix b){Matrix ret;LL x;int n = 7;for(int i = 0; i < n; ++i){for(int j = 0; j < n; ++j){x = 0;for(int k = 0; k < n; ++k){x += ((LL)a.m[i][k] * b.m[k][j]) % mod;}ret.m[i][j] = (x) % mod;}}return ret;
}
void init_unit(){// 单位矩阵for(int i = 0; i < maxn; ++i){unit.m[i][i] = 1;}
}
Matrix pow_mat(Matrix a, LL n){Matrix ans = unit;while (n) {if(n & 1){ans = ans * a;}a = a * a;n >>= 1;}return ans;
}
int main(){// 初始化单位矩阵init_unit();LL T = read();while (T--) {LL n = read();Matrix ans, a;LL A = read();LL B = read();if(n == 1){printf("%lld\n", A);}else if(n == 2){printf("%lld\n", B);}else{ans.m[0][0] = B; ans.m[0][1] = A; ans.m[0][2] = 16; ans.m[0][3] = 8; ans.m[0][4] = 4; ans.m[0][5] = 2; ans.m[0][6] = 1;a.m[0][0]=1; a.m[0][1]=1; a.m[0][2]=0; a.m[0][3]=0; a.m[0][4]=0; a.m[0][5]=0; a.m[0][6]=0;a.m[1][0]=2; a.m[1][1]=0; a.m[1][2]=0; a.m[1][3]=0; a.m[1][4]=0; a.m[1][5]=0; a.m[1][6]=0;a.m[2][0]=1; a.m[2][1]=0; a.m[2][2]=1; a.m[2][3]=0; a.m[2][4]=0; a.m[2][5]=0; a.m[2][6]=0;a.m[3][0]=4; a.m[3][1]=0; a.m[3][2]=4; a.m[3][3]=1; a.m[3][4]=0; a.m[3][5]=0; a.m[3][6]=0;a.m[4][0]=6; a.m[4][1]=0; a.m[4][2]=6; a.m[4][3]=3; a.m[4][4]=1; a.m[4][5]=0; a.m[4][6]=0;a.m[5][0]=4; a.m[5][1]=0; a.m[5][2]=4; a.m[5][3]=3; a.m[5][4]=2; a.m[5][5]=1; a.m[5][6]=0;a.m[6][0]=1; a.m[6][1]=0; a.m[6][2]=1; a.m[6][3]=1; a.m[6][4]=1; a.m[6][5]=1; a.m[6][6]=1;a = pow_mat(a, n - 2);ans = ans * a;printf("%lld\n", ans.m[0][0] % mod);}}return 0;
}
HDU 5950 Recursive sequence相关推荐
- HDU 5950——Recursive sequence
Recursive sequence 题意:给定起始的两个数a,b,求第n个数%mod 思路: 第一眼看出来是矩阵快速幂,不过当时没推出来(其实推了一半把自己给否定了) 正解是,根据二项式定理,对于f ...
- HDU 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...
- Recursive sequence HDU - 5950
Recursive sequence HDU - 5950 题意: 给你一个式子:f[n]=2f[n-2]+f[n-1]+n4 给你f[1]和f[2],给你一个n,求f[n] f[1],f[2],n& ...
- HDU 1005 Number Sequence
[题目] Number Sequence Time Limit: 2000/1000 MS (Jav ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...
- 数论练习二之BSGS算法——随机数生成器,Matrix,Lunar New Year and a Recursive Sequence,Fermat‘s Last Theorem
[SDOI2013] 随机数生成器 description solution 肯定是非常想找一个通项公式来表示第nnn个数的 依据形式,考虑化成等比数列 xi+1+k=a(xi+k)=a⋅xi+b+t ...
- [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats
矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...
- HDU 5400 Arithmetic Sequence
HDU 5400 Arithmetic Sequence /** HDU 5400 Arithmetic Sequence 直接预处理求解就好了 预处理找出以a[i]结尾最长的subArr长度(满足条 ...
- HDU.1005 Number Sequence
原题 HDU.1005 Number Sequence 分类 杂题 题意 给定一个数列{an}\left\{ a_n \right\}{an}的前两项a1a_1a1.a2a_2a2,以及其递推公 ...
- HDU 1560 DNA sequence(DNA序列)
HDU 1560 DNA sequence(DNA序列) Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K ...
最新文章
- 没有提示_华为手机发出莫名的提示音,打开什么也没有?原来是它们在作怪
- feign调用多个服务_Spring Cloud多个微服务之间调用代码实例
- 配置phpmyadmin连接远程 MySQL数据库
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
- 手写简版spring --6--应用上下文(BeanPostProcessor 和 BeanFactoryPostProcessor)
- 管道和过滤器模式----POSA模式助记格式
- jupyter 方框 汉字,jupyter画图中文显示乱码问题解决办法
- SQL Server 查询数据库中所有的表名及行数
- 分步骤演示如何使用Filter链拦截MyServlet的同一个请求
- asp.net 客户端回调功能的实现机制探讨(响应部分及可能的优化)
- 表-创建表-表的转换函数
- 小学计算机应用到英语课教案,人教版小学英语三年级上册unit one hello!文具单词教学信息技术应用成果(教学设计方案).doc...
- PHP第三方易宝支付对接
- Android 健康饮食软件详解
- 我的物联网大学【第五章】:沉默不会爆发,沉默一定会灭亡!
- 尚德机构第四季度营收5.688亿元 亏损大幅缩小
- 【Linux】进程通信
- sendmail服务器部署
- 力软:九年沉淀,从呱呱坠地到风华少
- 《C语言程序设计》第五版谭浩强课后答案 第九章《用户自己建立数据类型​》习题答案 (大一大二、考研、计算机二级必看)