Sequence( 分块+矩阵快速幂 )
#include<bits/stdc++.h>
using namespace std;
#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
int gcd(int a,int b){return b?gcd(b,a%b):a;} ll A,B,C,D,N,P;
struct mat {
ll a[][];
}c; mat mat_mul(mat x,mat y) {
mat s;
mem(s.a,);
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
s.a[i][j]=(s.a[i][j]+x.a[i][k]*y.a[k][j]%mod)%mod;
return s;
} mat mat_pow(ll n) {
mat res;
mem(res.a,);
res.a[][]=res.a[][]=res.a[][]=;
while(n) {
if(n&) res=mat_mul(res,c);
c=mat_mul(c,c);
n>>=;
}
return res;
} ll solove(ll i) {
ll l=i,r=N;
ll p=P/i;
while(l<r) {
int mid=r-(r-l)/;
if(p==P/mid) l=mid;
else if(p>P/mid)r=mid-;
else l=mid+;
}
return l;
} int main() {
int T;scanf("%d",&T);
while(T--) {
scanf("%lld%lld%lld%lld%lld%lld",&A,&B,&C,&D,&P,&N);
if(N==){printf("%lld\n",A);continue;}
if(N==){printf("%lld\n",B);continue;}
ll f1=B; ll f2=A; mat ans;
for(ll i=; i<=N;) {
ll j=solove(i);
mem(c.a,);
c.a[][]=D;c.a[][]=C;
c.a[][]=;c.a[][]=;
c.a[][]=P/i; ans=mat_pow(j-i+);
ll ff1=(ans.a[][]*f1%mod+ans.a[][]*f2%mod+ans.a[][])%mod;
ll ff2=(ans.a[][]*f1%mod+ans.a[][]*f2%mod+ans.a[][])%mod;
f1=ff1; f2=ff2; i=j+;
}
printf("%lld\n",f1);
}
return ;
}
Sequence( 分块+矩阵快速幂 )的更多相关文章
- [hdu-6395]Sequence 分块+矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6395 因为题目数据范围太大,又存在递推关系,用矩阵快速幂来加快递推. 每一项递推时 加的下取整的数随 ...
- 杭电多校第七场 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-6395 多校7 Sequence(除法分块+矩阵快速幂)
Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU - 6395 Sequence (整除分块+矩阵快速幂)
定义数列: $\left\{\begin{eqnarray*} F_1 &=& A \\ F_2 &=& B \\ F_n &=& C\cdot{}F_ ...
- A - Number Sequence(矩阵快速幂或者找周期)
Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * ...
- HDU 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...
- HDU 5667 Sequence(矩阵快速幂)
Problem Description Holion August will eat every thing he has found. Now there are many foods,but he ...
- HDU 6395 Sequence 【矩阵快速幂 && 暴力】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6395 Sequence Time Limit: 4000/2000 MS (Java/Others) ...
- HDU6395-Sequence 矩阵快速幂+除法分块 矩阵快速幂模板
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. Solution ...
随机推荐
- JavaWEB - JSP及隐含对象
---------------------------------------------------------------------------------------------------- ...
- Cannot resolve class or package 'springframework' less... (Ctrl+F1) Inspection info:Spring XML mode
其实这个问题是由于MySQL 这个jar 包依赖类型默认是runtime ,也就是说只有运行时生效,所以虽然这里报错,但是不影响你代码运行. 解决方案: 将runtime 修改为Compile 即可 ...
- jqgrid--api,官网demo,编辑
api参考: http://blog.csdn.net/hurryjiang/article/details/7551477 官网demo: http://www.trirand.com/blog/j ...
- android开发 MyEclipse下测试连接MySQL数据库
1.首先要加载MySQL驱动包. 步骤:右击项目找到build path->configure build path->libraries——>add External JARs添加 ...
- 低调的css3属性font-size-adjust
在我们日常的项目中经常会用到不同的字体来达到我们想要的效果,可是某些情况下不同字体的大小在相同的px下显示的大小是不同的 <div id="div1">Text 1&l ...
- 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
- 【转】 Pro Android学习笔记(三八):Fragment(3):基础小例子-续
目录(?)[-] Step 2实现Fragment指定调用类TitleFragment onInflate和onAttach onCreate和onCreateView onActivityCreat ...
- STL string大小写 转换
std::string data = "This is a sample string."; // convert string to upper case std::for_ea ...
- leetcode笔记-1 twosum
# -*- coding: utf-8 -*- #!/bin/env python # Python2.7 nums = [2, 4, 7, 0, 12, 6] print sorted(range( ...
- ES6学习之Symbol
定义:一种新的原始数据类型,表示独一无二的值 const a = Symbol(); const b = Symbol("foo") //接收参数的Symbol,参数表示对Symb ...