HDU-6395-矩阵快速幂
Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 52 Accepted Submission(s): 13
Your job is simple, for each task, you should output Fn module 109+7.
Then, for the next T lines, each line consists of 6 integers, A , B, C, D, P, n.
1≤T≤200≤A,B,C,D≤1091≤P,n≤109
3 3 2 1 3 5
3 2 2 2 1 4
24
#include <bits/stdc++.h>
using namespace std;
#define LL long long
LL mod=1e9+;
LL f[],T,A,B,C,D,P,N;
struct matrix{
LL a[][];
matrix(){
memset(a,,sizeof(a));
}
matrix operator*(matrix &tmp){
matrix ans;
for(int i=;i<;++i){
for(int j=;j<;++j){
for(int k=;k<;++k){
ans.a[i][j]=(ans.a[i][j]+a[i][k]*tmp.a[k][j]);
// ans.a[i][j]%=mod;
}
ans.a[i][j]%=mod;
}
}
return ans;
} void show(){
puts("---");
for(int i=;i<;++i){
for(int j=;j<;++j){
cout<<a[i][j]<<' ';
}cout<<endl;
}
puts("---");
}
}X,U;
matrix qpow(matrix A,int b){
matrix ans=U;
while(b){
if(b&)ans=ans*A;
A=A*A;
b>>=;
}
return ans;
}
LL solve(LL i){
LL key=P/i;
LL l=i,r=N;
while(l<r){
int mid=r-(r-l)/;
//cout<<mid<<' '<<P/mid<<endl;
if(P/mid==key) l=mid;
else if(P/mid<key){
r=mid-;
}
else{
l=mid+;
}
}
return l;
}
int main(){
U.a[][]=U.a[][]=U.a[][]=;
scanf("%lld",&T);
while(T--){
scanf("%lld%lld%lld%lld%lld%lld",&A,&B,&C,&D,&P,&N); f[]=A%mod;
f[]=B%mod;
if(N<=){
cout<<f[N]<<endl;
continue;
}
//for(int i=3;i<=N;++i) f[i]=(C*f[i-2]%mod+D*f[i-1]%mod+(P/i))%mod;
memset(X.a,,sizeof(X.a));
X.a[][]=D,X.a[][]=;
X.a[][]=C,X.a[][]=;
LL f1=f[],f2=f[];
for(LL i=;i<=N;){
LL j=solve(i);
//cout<<i<<' '<<j<<endl;
X.a[][]=P/i;
matrix ans=qpow(X,j-i+);
LL _f1=(f1*ans.a[][]%mod+f2*ans.a[][]%mod+ans.a[][])%mod;
LL _f2=(f1*ans.a[][]+f2*ans.a[][]+ans.a[][])%mod; f1=_f1;
f2=_f2;
//cout<<j<<' '<<f1<<' '<<f2<<' '<<f[j]<<' '<<f[j-1]<<endl;
i=j+;
}
cout<<f1<<endl;
//printf("%lld %lld\n",f1,f[N]); }
return ;
}
/*
2
3 3 2 1 3 5
3 2 2 2 1 4 */
HDU-6395-矩阵快速幂的更多相关文章
- HDU 2855 (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...
- HDU 4471 矩阵快速幂 Homework
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 解题思路,矩阵快速幂····特殊点特殊处理····· 令h为计算某个数最多须知前h个数,于是写 ...
- HDU - 1575——矩阵快速幂问题
HDU - 1575 题目: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n( ...
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...
- 随手练——HDU 5015 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015 看到这个限时,我就知道这题不简单~~矩阵快速幂,找递推关系 我们假设第一列为: 23 a1 a2 ...
- HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识
求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...
- How many ways?? HDU - 2157 矩阵快速幂
题目描述 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的 ...
- HDU 5950 矩阵快速幂
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 1757 矩阵快速幂 **
一看正确率这么高,以为是水题可以爽一发,结果是没怎么用过的矩阵快速幂,233 题解链接:点我 #include<iostream> #include<cstring> ; us ...
- HDU 4686 矩阵快速幂 Arc of Dream
由式子的性质发现都是线性的,考虑构造矩阵,先有式子,a[i] = ax * a[i-1] + ay; b[i] = bx*b[i-1] +by; a[i]*b[i] = ax*bx*a[i-1]*b[ ...
随机推荐
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
题意 \(n\) 个数,\(m\) 个操作,每次操作修改某个数,或者询问某个区间的第 \(K\) 小值. \(1 \leq n \leq 50000\) \(1 \leq m \leq 10000\) ...
- Python实现机器学习算法:AdaBoost算法
Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...
- .NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图
“通过使用 ComponentOne .NET控件产品,实现了兼具 BS 架构灵活性与 CS 架构的客户体验.丰富的控件满足了项目中的各种特殊需求,使得开发的精力可以专注于业务逻辑,为团队节省了时间. ...
- matplotlib python
#导入包 import matplotlib.pyplot as plt import numpy as np # 从[-1,1]中等距去50个数作为x的取值 x = np.linspace(-1, ...
- Leetcode118_Pascal's Triangle_Easy
Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's t ...
- mesh合并
[风宇冲]Unity3D性能优化:DrawCall优化 (2013-03-05 15:39:27) 转载▼ 标签: it unity unity3d unity3d教程 分类: Unity3d之优化 ...
- BZOJ 2754 【SCOI2012】 喵星球上的点名
题目链接:喵星球上的点名 首先可以发现姓和名两个串就是逗你玩的.在两个串中间插入一个\(10001\),当成一个串做就可以了. 于是我们的问题转化为了: 有\(n\)个串\(A_1,A_2,\dots ...
- bzoj 2243: [SDOI2011]染色 线段树区间合并+树链剖分
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 7925 Solved: 2975[Submit][Status ...
- scss切页面
html <div class="data-list"> <div class="data-list-item"> <div cl ...
- L2-021 点赞狂魔
会set的基础用法就可以A了,虽然是L2题,但是不难,代码如下,很好理解,set在这里不解释了自己去网上查一下就明白了: #include<stdio.h> #include<str ...