题意:矩阵快速幂求斐波那契数列。

分析:

aaarticlea/png;base64,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" alt="" />

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<list>
#define fin freopen("in.txt", "r", stdin)
#define fout freopen("out.txt", "w", stdout)
#define pr(x) cout << #x << " : " << x << " "
#define prln(x) cout << #x << " : " << x << endl
typedef long long ll;
typedef unsigned long long llu;
const int INT_INF = 0x3f3f3f3f;
const int INT_M_INF = 0x7f7f7f7f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const ll LL_M_INF = 0x7f7f7f7f7f7f7f7f;
const double pi = acos(-1.0);
const double EPS = 1e-;
const int dx[] = {, , -, };
const int dy[] = {-, , , };
const ll MOD = 1e9;
const int MAXN = + ;
const int MAXT = + ;
using namespace std;
struct Node
{
ll c[][];
Node()
{
memset(c, , sizeof c);
}
};
Node multi(Node &a, Node &b)
{
Node ans;
for(int i = ; i < ; ++i)
for(int j = ; j < ; ++j)
for(int k = ; k < ; ++k){
ans.c[i][j] += (a.c[i][k] * b.c[k][j]);
ans.c[i][j] %= MOD;
}
return ans;
}
ll q_pow(ll cur)
{
Node a;
a.c[][] = a.c[][] = a.c[][] = ;
Node ans;
ans.c[][] = ans.c[][] = ;
while(cur)
{
if(cur & )
{
ans = multi(ans, a);
}
a = multi(a, a);
cur /= ;
}
return ans.c[][];
}
int main()
{
int P;
scanf("%d", &P);
while(P--)
{
int K;
ll Y;
scanf("%d%lld", &K, &Y);
printf("%d %lld\n", K, q_pow(Y - ));
}
return ;
}

UVaLive 7361(矩阵快速幂)的更多相关文章

  1. UVaLive 7361 Immortal Porpoises (矩阵快速幂)

    题意:求Fibonacci的第 n 项. 析:矩阵快速幂,如果不懂请看http://www.cnblogs.com/dwtfukgv/articles/5595078.html 是不是很好懂呢. 代码 ...

  2. UVaLive 3704 Cellular Automaton (循环矩阵 + 矩阵快速幂)

    题意:一个细胞自动机包含 n 个格子,每个格子取值是 0 ~ m-1,给定距离,则每次操作后每个格子的值将变成到它距离不超过 d 的所有格子在操作之前的值之和取模 m 后的值,其中 i 和 j 的距离 ...

  3. UVALive 3704 细胞自动机 矩阵快速幂

    是时候要做做数学类的题目了 这属于比较简单的矩阵快速幂了,因为有个已知的矩阵循环的结论,所以为了节约时空,只需要保留一行即可,这个稍微有点难写,也不是难写,主要是注意细节.其他的矩阵快速幂一下即可 # ...

  4. LA 3704细胞自动机——循环矩阵&&矩阵快速幂

    题目 一个细胞自动机包含 $n$ 个格子,每个格子的取值为 $0 \sim m-1$.给定距离 $d$,则每次操作是将每个格子的值变为到它的距离不超过 $d$ 的所有格子的在操作之前的值的和除以 $m ...

  5. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  6. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  7. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

  8. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  9. HDU5950(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...

随机推荐

  1. MHA手动切换 原创2 (主参与复制)

    monitor 执行下面命令后, --orig_master_is_new_slave :原主变为新从,即server1变成了slave1的从.slave2跟据app1.conf中配制也变成了slav ...

  2. Javassist初体验

           最初接触javassist是在研究dubbo源码的时候,那会对其的理解还停留在动态生成字节码的位置,可以做动态代理之类的动态化处理.最近由于项目需要扫描springMVC中control ...

  3. 网络IPC:套接字之套接字选项

    套接字机制提供两个套接字选项接口来控制套接字的行为.一个接口用来设置选项,另一个接口允许查询一个选项的状态.可以获取或设置的三种选项: (1)通用选项,工作在所有套接字类型上. (2)在套接字层次管理 ...

  4. Hidden Markov Model

    Markov Chain 马尔科夫链(Markov chain)是一个具有马氏性的随机过程,其时间和状态参数都是离散的.马尔科夫链可用于描述系统在状态空间中的各种状态之间的转移情况,其中下一个状态仅依 ...

  5. Linux下的lds链接脚本简介

    转载:http://hubingforever.blog.163.com/blog/static/171040579201192472552886/   一. 概论 每一个链接过程都由链接脚本(lin ...

  6. js学习笔记第二篇

    Js笔记整理 1.StringAPI a)        大小写转换:str.toUpperCase();str.toLowerCase(); b)        获取指定位置字符: Str[i]-- ...

  7. 导入GPUImage,实时滤镜相机,GUPImage遇到的问题解决,_OBJC_METACLASS_$_GBGPUImageView in GBGPUImageView.o

    导入方法转自:http://www.cnblogs.com/S2-huai/p/3881349.html.. (原文:http://www.cnblogs.com/YouXianMing/p/3709 ...

  8. Android(java)学习笔记107-0:通过反射获得构造方法并且使用

    1.获取字节码文件对象:             Class c = Class.forName("cn.itcast_01.Person"); 2.获取构造方法         ...

  9. 树形菜单 jsTree 使用方法

    jsTree版本:3.0.4 在ASP.NET MVC中使用jsTree Model: public class Department { public int Id { get; set; } pu ...

  10. Scala中的数组

    数组 数组的两种声明方式,建议声明数组时指定类型. 访问数组元素时获取数组下标 数组Array类本身有很多非常方便的方法 变长数组ArrayBuffer,能够动态增加元素,也可以实现与Array的互转 ...