HDUOJ 4565 So Easy!
HDUOJ 4565 So Easy!
Problem Description
A sequence Sn is defined as:
Where a, b, n, m are positive integers.┌x┐is the ceil of x. For example, ┌3.14┐=4. You are to calculate Sn.
You, a top coder, say: So easy!
Input
There are several test cases, each test case in one line contains four positive integers: a, b, n, m. Where 0<a,m<215,(a−1)2<b<a2,0<b,n<2310< a, m < 2^{15}, (a-1)^2< b < a^2, 0 < b, n < 2^{31}0<a,m<215,(a−1)2<b<a2,0<b,n<231.The input will finish with the end of file.
Output
For each the case, output an integer Sn.
Sample Input
2 3 1 2013
2 3 2 2013
2 2 1 2013
Sample Output
4
14
4
非常经典的矩阵快速幂构造题:
首先看题目的条件 :
(a−1)2<b<a2(a-1)^2< b < a^2(a−1)2<b<a2
0<a−b<10<a-\sqrt{b}<10<a−b<1 => 可以推出 a,ba,ba,b 必有一个是小数
(a−b)n<1(a-\sqrt{b})^n<1(a−b)n<1
┌(a−b)n(a-\sqrt{b})^n(a−b)n┐=1=1=1 => ┌(a+b)n(a+\sqrt{b})^n(a+b)n┐=(a+b)n+(a−b)n(a+\sqrt{b})^n+(a-\sqrt{b})^n(a+b)n+(a−b)n
所以我们考虑构造:
s=(a+b)n+(a−b)ns=(a+\sqrt{b})^n+(a-\sqrt{b})^ns=(a+b)n+(a−b)n
下面找递推矩阵:
类比斐波那契数列,我们要找 Sn=pSn−1+qSn−2S_n=pS_{n-1}+qS_{n-2}Sn=pSn−1+qSn−2
移项得推导方程:
S2−pS−q=0S^2-pS-q=0S2−pS−q=0
已知两解为:
S1=a+b,S2=a−bS_1=a+\sqrt{b},S_2=a-\sqrt{b}S1=a+b,S2=a−b
解得:
p=2a,q=a−b2p=2a,q=a-b^2p=2a,q=a−b2
所以得到递推矩阵:
[SnSn−1]=[2aa−b210][Sn−1Sn−2]\left[ \begin{matrix} S_n\\ S_{n-1} \end{matrix} \right]= \left[ \begin{matrix} 2a&a-b^2\\ 1&0\\ \end{matrix} \right] \left[ \begin{matrix} S_{n-1}\\ S_{n-2} \end{matrix} \right] [SnSn−1]=[2a1a−b20][Sn−1Sn−2]
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod,n,A,B;
struct mat
{ll m[2][2];
}ans,a;void init(mat &a){memset(a.m,0,sizeof(a.m));for(int i=0;i<2;i++) a.m[i][i]=1;
}mat mul(mat a,mat b)
{mat c;memset(c.m,0,sizeof(c.m));for(int i=0;i<2;i++){for(int k=0;k<2;k++){if(a.m[i][k]==0) continue;for(int j=0;j<2;j++){c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%mod;if(c.m[i][j]<0) c.m[i][j]+=mod;}}}return c;
}mat mat_pow(mat a,ll k)
{mat ans;init(ans);while(k>0){if(k&1) ans=mul(a,ans);a=mul(a,a);k>>=1;}return ans;
}int main(){while(cin>>A>>B>>n>>mod){a.m[0][0]=2*A%mod;a.m[0][1]=((B-A*A%mod)+mod)%mod;a.m[1][0]=1;a.m[1][1]=0;ans.m[0][0]=2*A%mod;ans.m[1][0]=2%mod;ans=mul(mat_pow(a,n-1),ans);cout<<ans.m[0][0]<<endl;}return 0;
}
HDUOJ 4565 So Easy!相关推荐
- HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- linux下eclipse开发storm,eclipse 通过maven 开发storm项目
window系统安装java 这里下载jdk8....... 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置&quo ...
- kuangbin带你飞 专题1-23 题单
kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...
- 老鱼的-kuangbin专题题解
kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...
- So Easy!(HDU - 4565)
Problem Description A sequence S n is defined as: Where a, b, n, m are positive integers.┌x┐is the c ...
- LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)
LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...
- LeetCode刷题记录14——257. Binary Tree Paths(easy)
LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...
- LeetCode刷题记录13——705. Design HashSet(easy)
LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...
最新文章
- python扩展库丰富吗_python扩展库
- python整数和浮点数相乘_python中整数除法和浮点数到整数转换之间的区别是什么原因?...
- POJ - 3417 Network(树上差分)
- Spark _24 _读取JDBC中的数据创建DataFrame/DataSet(MySql为例)(三)
- 算法设计与分析——贪心算法——背包问题
- 记录6月28日的体验,自己现实的感触
- Spring Boot 分布式会话
- 和feign的区别_Feign的传参研究
- 双系统ubuntu 删除后重装
- [Python]学习基础篇:面向对象编程
- 如何按距离排序 php,php做附近的人,根据距离由近到远进行排序
- 如何开发Web3D游戏
- 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
- stm32电容触摸按键实验
- 看老虎和狮子谁是兽中之王(国外学者详细论证)
- MAALA3.9_初等矩阵和等价 (Elementary Matrices and Equivalence)
- 未支付订单----倒计时
- Matplotlib文字处理
- c语言课程设计图书管理系统
- CSS基础-05-颜色取值、标签居中(了解即可)、综合案例-新闻内容