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 ;
}

最新文章

  1. [LeetCode]444. Sequence Reconstruction
  2. 线性控制原理——PID算法应用
  3. [Nodejs]十分钟快速编写简单静态文件服务器
  4. Unity开发游戏 flapybird 无广告老马版分享
  5. MVC显示详细记录Without Entity Framework
  6. 虚拟机centos6.5 --VirtualBox设置全屏
  7. 桥接模式(Bridge Pattern)
  8. 基于redis的IP地址快速查询
  9. List,Set,Map三种接口的区别
  10. [C# 设计模式] Adapter - 适配器模式(两种)
  11. c#一步一步实现ORM
  12. python开发 *进程数据隔离.守护进程,进程同步工具 * 180725
  13. PHP使用http_build_query()构造URL字符串的方法(可将POST参数组转换拼接成GET请求链接)
  14. TSFDEVTY
  15. Spring RedisTemplate操作-发布订阅操作(8)
  16. Entity Framework 无法加载指定的元数据资源。
  17. 利用canvas绘制序列帧动画
  18. Golang cron 定时任务使用
  19. CCF CSP 201403-2 窗口
  20. cpu 核数及逻辑数统计

热门文章

  1. oracle启动关闭命令
  2. Hadoop学习笔记: 安装配置Hadoop
  3. Java基础之序列化对象——将对象写入到文件中(SerializeObjects)
  4. iOS 提交代码出现提示弹出框显示 “A commit message is required to perform this operation.Enter a commit message and try again.“
  5. NSCoding归档
  6. [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
  7. [转] 多线程 《深入浅出 Java Concurrency》目录
  8. &lt;c:if&gt;标签的使用
  9. android复习第二天------布局
  10. Android 播放视频文件