定义数列:

$\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 (整除分块+矩阵快速幂)的更多相关文章

  1. HDU 6395 Sequence(分段矩阵快速幂)题解

    题意: 已知\(A,B,C,D,P,n\)以及 \[\left\{ \begin{aligned} & F_1 = A \\ & F_2 = B\\ & F_n = C*F_{ ...

  2. 杭电多校第七场 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 ...

  3. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  4. HDU-6395 多校7 Sequence(除法分块+矩阵快速幂)

    Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  5. [hdu-6395]Sequence 分块+矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6395 因为题目数据范围太大,又存在递推关系,用矩阵快速幂来加快递推. 每一项递推时  加的下取整的数随 ...

  6. poj2778DNA Sequence (AC自动机+矩阵快速幂)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud DNA Sequence Time Limit: 1000MS   Memory ...

  7. 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 ...

  8. HDU 4686 Arc of Dream 矩阵快速幂,线性同余 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=4686 当看到n为小于64位整数的数字时,就应该有个感觉,acm范畴内这应该是道矩阵快速幂 Ai,Bi的递推式题目 ...

  9. HDU - 4990 Reading comprehension 【矩阵快速幂】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4990 题意 初始的ans = 0 给出 n, m for i in 1 -> n 如果 i 为奇 ...

随机推荐

  1. 自定义 filter simple_tag inclusion_tag 总结

    在已经注册的app下创建templatetags的python包 在包内创建py文件 my_tags.py 在py文件中写代码: from django import template registe ...

  2. Android selector一些坑

    最近给textview添加seletor时,发现textcolor和background要分开成两个selector.并且,textcolor的要再res路径下建color路径,然后在color下面建 ...

  3. WinForm笔记1:TextBox编辑时和DataGridView 单元格编辑时 的事件及其顺序

    TextBox 编辑框 When you change the focus by using the mouse or by calling the Focus method, focus event ...

  4. python解析库

    BeautifulSoup示例: #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati html_doc = "&qu ...

  5. 北京望京SOHO-电商墨镜面试题

    我去面试,boos 给出了个.动态规划的题目: ‘’‘’‘’ A = "asdf" B = "axazxcv" S = "axasazdxfcv&qu ...

  6. .Net Core Grpc Consul 实现服务注册 服务发现 负载均衡

    本文是基于..net core grpc consul 实现服务注册 服务发现 负载均衡(二)的,很多内容是直接复制过来的,..net core grpc consul 实现服务注册 服务发现 负载均 ...

  7. sql server isnull函数

    isnull函数 --ISNULL() 函数用于规定如何处理 NULL 值 语法:SELECT ISNULL(check_expression, replacement_value) --check_ ...

  8. IDEA导入Eclipse 非Maven的Web项目

  9. CPU如何区分溢出和自然进位?

    CPU如何区分溢出和自然进位? 之前学习补码的时候倒是学会了基本概念,但是最近又接触时发现还有不清楚的地方,所以又研究了下 今天的核心问题的"CPU是如何区分高位自然舍弃和溢出的?" ...

  10. 用原生js来写一个swiper滑块插件

        是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...