HDU 5950:Recursive sequence(矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=5950
题意:给出 a,b,n,递推出 f(n) = f(n-1) + f(n-2) * 2 + n ^ 4. f(1) = a, f(2) = b.
思路:在比赛时候知道是矩阵快速幂,可是推不出矩阵.那个n^4不知道怎么解决。结束后问其他人才知道要构造一个7 * 7的矩阵,而不是3 * 3的..

转自:http://blog.csdn.net/spring371327/article/details/52973534
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <vector>
using namespace std;
#define N 1010
#define INF 0x3f3f3f3f
#define MOD 2147493647
typedef long long LL; struct matrix
{
LL a[][]; void init() {
memset(a, , sizeof(a));
for(int i = ; i < ; i++) a[i][i] = ;
} matrix operator * (matrix b) {
matrix ans;
LL tmp;
for(int i = ; i < ; i++) {
for(int j = ; j < ; j++) {
ans.a[i][j] = ;
for(int k = ; k < ; k++) {
tmp = a[i][k] * b.a[k][j] % MOD;
ans.a[i][j] = (ans.a[i][j] + tmp % MOD) % MOD;
}
}
}
return ans;
}
}; matrix q_pow(matrix a, LL b)
{
matrix ans;
ans.init();
while(b) {
if(b & ) ans = ans * a;
b >>= ;
a = a * a;
}
return ans;
} int main()
{
matrix mo;
memset(mo.a, , sizeof(mo.a));
mo.a[][] = ;
mo.a[][] = ; mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = ;
mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = ;
mo.a[][] = , mo.a[][] = , mo.a[][] = , mo.a[][] = ;
mo.a[][] = , mo.a[][] = , mo.a[][] = ;
mo.a[][] = , mo.a[][] = ;
mo.a[][] = ;
int t;
scanf("%d", &t);
while(t--) {
long long n, a, b;
scanf("%I64d%I64d%I64d", &n, &a, &b);
if(n == ) printf("%I64d\n", a);
else if(n == ) printf("%I64d\n", b);
else {
matrix ans = q_pow(mo, n - );
LL sum = ;
sum = (sum + ans.a[][] * a) % MOD;
sum = (sum + ans.a[][] * b) % MOD;
sum = (sum + ans.a[][] * ) % MOD;
sum = (sum + ans.a[][] * ) % MOD;
sum = (sum + ans.a[][] * ) % MOD;
sum = (sum + ans.a[][] * ) % MOD;
sum = (sum + ans.a[][]) % MOD;
printf("%I64d\n", sum);
}
}
return ;
}
HDU 5950:Recursive sequence(矩阵快速幂)的更多相关文章
- HDU 5950 - Recursive sequence - [矩阵快速幂加速递推][2016ACM/ICPC亚洲区沈阳站 Problem C]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with ...
- hdu 5950 Recursive sequence 矩阵快速幂
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 5950 Recursive sequence (矩阵快速幂)
题意:递推公式 Fn = Fn-1 + 2 * Fn-2 + n*n,让求 Fn; 析:很明显的矩阵快速幂,因为这个很像Fibonacci数列,所以我们考虑是矩阵,然后我们进行推公式,因为这样我们是无 ...
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...
- HDU5950 Recursive sequence (矩阵快速幂加速递推) (2016ACM/ICPC亚洲赛区沈阳站 Problem C)
题目链接:传送门 题目: Recursive sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total ...
- HDU5950 Recursive sequence —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-5950 Recursive sequence Time Limit: 2000/1000 MS (Java/Others) ...
- HDU - 1005 Number Sequence 矩阵快速幂
HDU - 1005 Number Sequence Problem Description A number sequence is defined as follows:f(1) = 1, f(2 ...
- HDU 1005 Number Sequence(矩阵快速幂,快速幂模板)
Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...
- HDU - 1005 -Number Sequence(矩阵快速幂系数变式)
A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) m ...
- CF1106F Lunar New Year and a Recursive Sequence——矩阵快速幂&&bsgs
题意 设 $$f_i = \left\{\begin{matrix}1 , \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i < k\\ ...
随机推荐
- gcc工具链简述
工具链软件包括BINUTILS.GCC.GLIBC.GDB等. BINUTILS是二进制程序处理工具,包括链接器.汇编器等目标程序处理的工具. GCC(GNU Compiler Collection) ...
- HTML页面刷新、跳转
HTML方式 1.页面刷新 <!-- 5秒之后,跳转到http://www.qunar.com页面 --> <meta http-equiv="refresh" ...
- category分类
/* 使用继承关系来扩充一个类,有一个弊病,高耦合性 category(分类,类别) 能够帮我们扩充一个类的功能 */ - (void)superJump { // [self eat]; [s ...
- HTML 5 Web 存储-localStorage
在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...
- Java Socket常见异常处理 和 网络编程需要注意的问题
在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发 ...
- linux文件编码
linux下新建一个文件,或采用fopen新建,那么文件的编码是什么? 怎么查看文件编码格式: 查看文件编码file命令file ip.txt ip.txt: UTF-8 Unicode text, ...
- 关于prototype
之前听过课,可是这一块没怎么听懂,最近练了两个例子,又问了问小石同学,朦朦胧胧,感觉还是不太懂,记录点心得 最基本的例子 function Box(name,age){ this.name=name; ...
- [转]easyui data-options的使用
原文地址:easyui data-options的使用 data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我们可以对easyui组件的实例化可以完全 ...
- Java基础(38):Calendar类的应用(优于Date类)
Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calen ...
- 对while((pid = waitpid(-1, &stat, WNOHANG)) > 0)不懂的地方,现在懂了
while((pid = waitpid(-1, &stat, WNOHANG)) > 0) 需要写到信号处理函数中,假如有10个子进程 只要父进程能够收到最后一个信号,就能把前面丢失的 ...