HDU - 6395 Sequence (整除分块+矩阵快速幂)
定义数列:
$\left\{\begin{eqnarray*} F_1 &=& A \\ F_2 &=& B \\ F_n &=& C\cdot{}F_{n-2}+D\cdot{}F_{n-1}+\left\lfloor\frac{P}{n}\right\rfloor \end{eqnarray*}\right.$
求该数列的第n项。
很明显的整除分块问题,把$\left\lfloor\frac{P}{n}\right\rfloor$相同n的分为一组进行矩阵快速幂即可。复杂度$O(3^3\sqrt nlogn)$
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+,mod=1e9+;
int n,A,B,C,D,P;
struct Mat {
int a[][],n;
Mat() {memset(a,,sizeof a),n=;}
int* operator[](int x) {return a[x];}
Mat operator+(Mat b) {
Mat c;
for(int i=; i<n; ++i)
for(int j=; j<n; ++j)
c[i][j]=(a[i][j]+b[i][j])%mod;
return c;
}
Mat operator*(Mat b) {
Mat c;
for(int i=; i<n; ++i)
for(int j=; j<n; ++j)
for(int k=; k<n; ++k)
c[i][j]=(c[i][j]+(ll)a[i][k]*b[k][j])%mod;
return c;
}
};
Mat Pow(Mat x,int p) {
Mat ret;
for(int i=; i<ret.n; ++i)ret[i][i]=;
for(; p; p>>=,x=x*x)if(p&)ret=ret*x;
return ret;
}
int solve() {
if(n==)return A;
Mat t;
for(int i=; i<t.n; ++i)t[i][i]=;
for(int l=,r,k; l<=n; l=r+) {
k=P/l,r=k&&P/k<n?P/k:n;
Mat x;
x[][]=D;
x[][]=C;
x[][]=k;
x[][]=;
x[][]=;
x=Pow(x,r-l+);
t=x*t;
}
return ((ll)t[][]*B%mod+(ll)t[][]*A%mod+t[][])%mod;
}
int main() {
int T;
for(scanf("%d",&T); T--;) {
scanf("%d%d%d%d%d%d",&A,&B,&C,&D,&P,&n);
printf("%d\n",solve());
}
return ;
}
HDU - 6395 Sequence (整除分块+矩阵快速幂)的更多相关文章
- HDU 6395 Sequence(分段矩阵快速幂)题解
题意: 已知\(A,B,C,D,P,n\)以及 \[\left\{ \begin{aligned} & F_1 = A \\ & F_2 = B\\ & F_n = C*F_{ ...
- 杭电多校第七场 1010 Sequence(除法分块+矩阵快速幂)
Sequence Problem Description Let us define a sequence as below f1=A f2=B fn=C*fn-2+D*fn-1+[p/n] Your ...
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- HDU-6395 多校7 Sequence(除法分块+矩阵快速幂)
Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- [hdu-6395]Sequence 分块+矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6395 因为题目数据范围太大,又存在递推关系,用矩阵快速幂来加快递推. 每一项递推时 加的下取整的数随 ...
- poj2778DNA Sequence (AC自动机+矩阵快速幂)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud DNA Sequence Time Limit: 1000MS Memory ...
- hdu 4686 Arc of Dream(矩阵快速幂)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 其中a0 = A0ai = ai-1*AX+AYb0 = B0bi = bi-1*BX+BY ...
- HDU 4686 Arc of Dream 矩阵快速幂,线性同余 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=4686 当看到n为小于64位整数的数字时,就应该有个感觉,acm范畴内这应该是道矩阵快速幂 Ai,Bi的递推式题目 ...
- HDU - 4990 Reading comprehension 【矩阵快速幂】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4990 题意 初始的ans = 0 给出 n, m for i in 1 -> n 如果 i 为奇 ...
随机推荐
- 自定义 filter simple_tag inclusion_tag 总结
在已经注册的app下创建templatetags的python包 在包内创建py文件 my_tags.py 在py文件中写代码: from django import template registe ...
- Android selector一些坑
最近给textview添加seletor时,发现textcolor和background要分开成两个selector.并且,textcolor的要再res路径下建color路径,然后在color下面建 ...
- WinForm笔记1:TextBox编辑时和DataGridView 单元格编辑时 的事件及其顺序
TextBox 编辑框 When you change the focus by using the mouse or by calling the Focus method, focus event ...
- python解析库
BeautifulSoup示例: #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati html_doc = "&qu ...
- 北京望京SOHO-电商墨镜面试题
我去面试,boos 给出了个.动态规划的题目: ‘’‘’‘’ A = "asdf" B = "axazxcv" S = "axasazdxfcv&qu ...
- .Net Core Grpc Consul 实现服务注册 服务发现 负载均衡
本文是基于..net core grpc consul 实现服务注册 服务发现 负载均衡(二)的,很多内容是直接复制过来的,..net core grpc consul 实现服务注册 服务发现 负载均 ...
- sql server isnull函数
isnull函数 --ISNULL() 函数用于规定如何处理 NULL 值 语法:SELECT ISNULL(check_expression, replacement_value) --check_ ...
- IDEA导入Eclipse 非Maven的Web项目
- CPU如何区分溢出和自然进位?
CPU如何区分溢出和自然进位? 之前学习补码的时候倒是学会了基本概念,但是最近又接触时发现还有不清楚的地方,所以又研究了下 今天的核心问题的"CPU是如何区分高位自然舍弃和溢出的?" ...
- 用原生js来写一个swiper滑块插件
是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...