递推 hdu 3411
http://blog.csdn.net/wust_xhj/article/details/47779539
怎么推可以看这里
f[0]=0
f[1]=1
[0,1]* | 0 q |(n-1)=[f(n-1),f(n)]
| 1 q-1|
跑一下快速幂
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h> using namespace std;
typedef long long ll;
#define MAXN 105 struct node
{
ll z[][];
};
ll Quick(ll a,ll b,ll c)
{
ll ans=;
while(b>)
{
if(b%==)
ans=(ans*a)%c;
b/=;
a=(a*a)%c;
}
return ans;
}
ll p;
node mou(node a,node b)
{
node c;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
ll sum=;
for(int k=;k<;k++)
sum=(sum+a.z[i][k]*b.z[k][j])%p;
c.z[i][j]=sum;
}
}
return c;
}
int main()
{
ll x1,y1,z1,y2,z2;
while(scanf("%lld%lld%lld",&x1,&y1,&z1)!=EOF)
{
if(x1==-&&y1==-&&z1==-)
break;
scanf("%lld%lld%lld",&y2,&z2,&p);
ll q=(Quick(x1,y1,p)+z1)%p;
node s,a,ans;
ans.z[][]=;
ans.z[][]=;
ans.z[][]=;
ans.z[][]=;
a.z[][]=;
a.z[][]=q;
a.z[][]=;
a.z[][]=q-;
s=a;
while(z2>)
{
if(z2%==)
ans=mou(ans,a);
z2=z2/;
a=mou(a,a);
}
for(int i=;i<y2;i++)
{
ans=mou(s,ans);
s=mou(s,s);
}
printf("%d\n",ans.z[][]); }
return ;
}
递推 hdu 3411的更多相关文章
- 递推 hdu 1396
给你边长为n的等边三角形 算有几个三角形 z[1]=1; 第N层 z[n] 1 n-1层 z[n-1] 2 2*n-1 个小的 3 新产生的 正的>1的三角形 n*(n-1)/2; ...
- 递推 hdu 1330
http://www.cnblogs.com/rainydays/archive/2013/01/16/2862235.html 看样例的答案 #include<stdio.h> #inc ...
- 递推 HDU 2569
考虑n-2 n-1 n z[n] 代表n个块 可行方案 1 n-2 和n-1 同 3*z[n-2] 2 n-2和n-1不同 2*(z[n-1]-z[n-2]); 减一减 然后可能是其中一种 *2 ...
- 递推 hdu 2064
z[n] n个盘子从1到3次数 先想2个的时候 1->2 2->3 1->2 3->2 2->1 2->3 1->2 2->3 显然 要先把上面n- ...
- 递推 hdu 2048
t 关于错排 共n个数 第n个 和一个交换 其他n-2错排 (n-1)*z[n-2]; n-1个错排 第n个和n-1个交换 (n-1)*z[n-1]; 求和 然后概率的话要除n! 一个一个除 ...
- 递推 HDU 1143
n%2==1 0 n%2==0 右边和左边没影响 右边的 * 左边的 z[n]=3*z[n-2]+2*z[n-4]+...2*z[0]; z[n-2]=3*z[n-4]+2*z[n-6]+...2*z ...
- HDU 2842 (递推+矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...
- hdu 1465:不容易系列之一(递推入门题)
不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 2085 核反应堆 --- 简单递推
HDU 2085 核反应堆 /* HDU 2085 核反应堆 --- 简单递推 */ #include <cstdio> ; long long a[N], b[N]; //a表示高能质点 ...
随机推荐
- mysql数据库乱码的问题解决
排查原因:打断点,查看到底是在执行存数据库操作之前就已经乱码了,还是存数据库操作后乱码的. 1.前者解决方案: 在web.xml里面加上: <filter> <filter-name ...
- LinqToXml (一) Create Xml file By Dom /Linq
目前,在xml 应用编程领域比较流行的开发模型是W3C 提供的DOM(文档对象模型),在.net Framework 通过命名空间 System.Xml 对该技术提供了支持.随着Linq to XMl ...
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
- 使用WebRTC搭建前端视频聊天室——点对点通信篇
WebRTC给我们带来了浏览器中的视频.音频聊天体验.但个人认为,它最实用的特性莫过于DataChannel——在浏览器之间建立一个点对点的数据通道.在DataChannel之前,浏览器到浏览器的数据 ...
- Andriod 自定义控件之音频条
今天我们实现一个直接继承于View的全新控件.大家都知道音乐播放器吧,在点击一首歌进行播放时,通常会有一块区域用于显示音频条,我们今天就来学习下,播放器音频条的实现. 首先我们还是先定义一个类,直接继 ...
- 软件工程第二次作业——git的使用
1. 参照 http://www.cnblogs.com/xinz/p/3803109.html 的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的 ...
- Oracle数据行拆分多行
工作和学习中常常会遇到一行要分割成多行数据的情况,在此整理一下做下对比. 单行拆分 如果表数据只有一行,则可以直接在原表上直接使用connect by+正则的方法,比如: select regexp_ ...
- Windows Server 2012 虚拟化实战:存储(二)
五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Windo ...
- 初识Android Studio
刚开始接触Android Studio,很多不适应的地方,自己慢慢摸索,记录下了一些问题和解决途径. 为了能使用android虚拟机,需要下载镜像,镜像有基于arm架构的也有基于intelx86.x6 ...
- 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。
说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好 ...