hdu4565(矩阵快速幂+经典的数学处理)
注意题目的一个关键条件(a-1)2< b < a2 , 于是可以知道 0 < a-√b < 1 ,所以 (a-√b)^n < 1 . 然后 (a+ √b)^n+(a-√b)^n 的值为整数且正好是 (a+√b)^n的向上取整.
然后就可以得到递推式 f[n+1]=2*a*f[n]-(a*a-b)*f[n-1] .
然后构造矩阵。 幂乘即可.
So Easy!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1364 Accepted Submission(s): 424
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!
2 3 2 2013
2 2 1 2013
14
4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <map>
#include <queue>
#include <sstream>
#include <iostream>
using namespace std;
#define INF 0x3fffffff typedef __int64 LL; LL a,b,n,m;
LL g[][];
LL MOD; void cal(LL s[][],LL t[][])
{
LL tmp[][];
memset(tmp,,sizeof(tmp));
for(int k=;k<;k++)
for(int i=;i<;i++)
for(int j=;j<;j++)
{
tmp[i][j]=(tmp[i][j]+s[i][k]*t[k][j])%MOD;
}
for(int i=;i<;i++)
for(int j=;j<;j++)
s[i][j]=tmp[i][j];
} int main()
{
//freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin);
//freopen("C:\\Users\\Administrator\\Desktop\\in.txt","w",stdout);
while(scanf("%d%d%d%d",&a,&b,&n,&m)!=EOF)
{
MOD=m;
g[][]=*a; g[][]=;
g[][]=b-a*a; g[][]=; n--;
LL sum[][];
for(int i=;i<;i++)
for(int j=;j<;j++)
if(i==j) sum[i][j]=;
else sum[i][j]=;
while(n)
{
if( (n&)!=)
cal(sum,g);
cal(g,g);
n>>=;
}
LL ans=((*a*sum[][]+*sum[][])%MOD+MOD)%MOD;
cout<<ans<<endl;
}
return ;
}
hdu4565(矩阵快速幂+经典的数学处理)的更多相关文章
- 51nod 1113 矩阵快速幂( 矩阵快速幂经典模板 )
1113 矩阵快速幂 链接:传送门 思路:经典矩阵快速幂,模板题,经典矩阵快速幂模板. /******************************************************* ...
- hdu4565矩阵快速幂
这题太坑了...刚开始以为可以用|a+sqrt(b) 1|水过...结果tle,还一直想明明我logn的做法怎么可能tle.. | 0 1| 实在无奈看的题解 (a+sqr ...
- [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂
从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- HDU2256&&HDU4565:给一个式子的求第n项的矩阵快速幂
HDU2256 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2256 题意:求(sqrt(2)+sqrt(3))^2n%1024是多少. 这个题算是h ...
- luogu3263/bzoj4002 有意义的字符串 (数学+矩阵快速幂)
首先我们发现$\frac{b+\sqrt{d}}{2}$这个形式好像一元二次方程的求根公式啊(???反正我发现不了) 然后我们又想到虽然这个东西不好求但是$(\frac{b-\sqrt{d}}{2}) ...
- hdu4565 So Easy! 矩阵快速幂
A sequence Sn is defined as: Where a, b, n, m are positive integers.┌x┐is the ceil of x. For example ...
- BZOJ2326 HNOI2011数学作业(矩阵快速幂)
考虑暴力,那么有f(n)=(f(n-1)*10digit+n)%m.注意到每次转移是类似的,考虑矩阵快速幂.首先对于位数不同的数字分开处理,显然这只有log种.然后就得到了f(n)=a·f(n-1)+ ...
- 2018.09.26 bzoj5221: [Lydsy2017省队十连测]偏题(数学推导+矩阵快速幂)
传送门 由于没有考虑n<=1的情况T了很久啊. 这题很有意思啊. 考试的时候根本不会,骗了30分走人. 实际上变一个形就可以了. 推导过程有点繁杂. 直接粘题解上的请谅解. 不得不说这个推导很妙 ...
随机推荐
- vs2017安装过程问题及解决方法
1. 问题:C++ 无法打开 源 文件 "errno.h"等文件 解决方法:https://jingyan.baidu.com/article/8ebacdf0167b2249f6 ...
- CSS3图片折角效果
本篇文章由:http://xinpure.com/css3-picture-angle-effect/ 图片折角效果主要是通过设置 border 属性实现的效果 效果预览 效果解析 假设我们将一个元素 ...
- 飞机3D轨迹绘制(经度-纬度-高度)
使用Python绘制 #绘制三维直线图,将飞机飞行的航迹用(经度,纬度和高度)来描述 #******************************************************** ...
- CentOS erlang安装、emqtt
安装erlang 如果未安装以后程序,请先安装依赖 $sudo yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-dev ...
- SD卡路径问题以及如何获取SDCard 内存
昨天在研究拍照后突破的存储路径的问题,开始存储路径写死为: private String folder = "/sdcard/DCIM/Camera/"(SD ...
- Android新手入门2016(10)--GridView
本文来自肥宝传说之路.引用必须注明出处! GridView跟ListView一样是多控件布局.实现九宫图是最方便的. 还是先看看图,没图说个鸡鸡是不是 如上图.是一种应用方式.在每一个格子里面.放入应 ...
- ajax 上传图片
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- django学习笔记【003】创建第一个带有model的app
[1]python应用程序要连接mysql有多个驱动程序可供选择: 1.MySQLdb 这个只支持python2.x 所以在这里就不说了: 2.mysqlclient 下载地址 https://pyp ...
- mysql主从复制之mysql-proxy实现读写分离
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lansgg.blog.51cto.com/5675165/1242674 本文系 ...
- git commit 、CHANGELOG 和版本发布的标准自动化
一直以来,因为团队项目迭代节奏很快,每次发布的更新日志和版本更新都是通过人肉来完成的.有时候实在忙的团团转,对于手动的写这些更新信息就显得力不从心了.对于团队新来的小伙伴,有时候遇到些紧急情况,就更显 ...