hdu6395 (矩阵快速幂+分块)
Online Judge Online Exercise Online Teaching Online Contests Exercise Author
F.A.Q
Hand In Hand
Online Acmers
Forum | Discuss
Statistical Charts
Problem Archive
Realtime Judge Status
Authors Ranklist C/C++/Java Exams
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
Virtual Contests
DIY | Web-DIY beta
Recent Contests
Author >
Mail Mail ()
Control Panel Control Panel
Sign Out Sign Out 2018百度之星复赛晋级名单出炉(增加20%晋级名额)~
Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others)
Total Submission(s): Accepted Submission(s): Problem Description
Let us define a sequence as below
Your job is simple, for each task, you should output Fn module +. Input
The first line has only one integer T, indicates the number of tasks. Then, for the next T lines, each line consists of integers, A , B, C, D, P, n. ≤T≤≤A,B,C,D≤≤P,n≤ Sample Input Sample Output Source
Multi-University Training Contest Recommend
chendu | We have carefully selected several similar problems for you:
分块矩阵快速幂
构造 0 1 0 fn-2 fn-1
c d 1 * fn-1 = fn
0 0 1 p/i p/i
//这题也是利用这个性质,比如p=16,
//那么:i按照p/(p/i)+1来递增,
//得到:1,2,3,4,5,6,9,17.
//滑动的区间中每个数对于p来说除数一样,比如【9,17)这部分对于16来说除数都是1, #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define ll long long
const int mod =1e9+;
struct node{
ll a[][];
};
struct pp{
ll a[][];
};
ll num[];
ll num2[];
node juzheng(node p,node q)
{
node ans;
memset (ans.a,,sizeof ans.a);
for(int i=; i<=; i++)
for(int j=; j<=; j++)
for(int h=; h<=; h++)
ans.a[i][j] =(ans.a[i][j]+p.a[i][h]*q.a[h][j])%mod; return ans;
}
pp juzheng2(node z,pp q)
{
pp ans;
memset (ans.a,,sizeof ans.a);
ans.a[][]=(z.a[][]*q.a[][]+z.a[][]*q.a[][]+z.a[][]*q.a[][])%mod;
ans.a[][] =(z.a[][]*q.a[][]+z.a[][]*q.a[][]+z.a[][]*q.a[][])%mod;
ans.a[][] =(z.a[][]*q.a[][]+z.a[][]*q.a[][]+z.a[][]*q.a[][])%mod;
return ans;
} node juzheng_qsm(node q,int m)
{
node ans;
memset(ans.a,,sizeof(ans.a));
ans.a[][]=;ans.a[][]=;ans.a[][]=;
while(m)
{
if(m%==)
{
ans=juzheng(ans,q);
}
m=m/;
q=juzheng(q,q);
}
return ans;
} int main()
{
int n;
scanf("%d",&n);
while(n--)
{
ll A,B,C,D,p,n;
memset(num2,,sizeof num2);
scanf("%lld%lld%lld%lld%lld%lld",&A,&B,&C,&D,&p,&n);
if(n<=) {printf("%lld\n",n==?:B);continue;}
ll cnt=;
ll temp=-; pp S;
S.a[][]=A;
S.a[][]=B;
S.a[][]=;
node san;
memset(san.a,,sizeof san.a);
san.a[][]=;
san.a[][]=C; san.a[][]=D; san.a[][]= san.a[][]=;
ll L=min(p,n);
ll i;
for( i=;i<=L;i=min(L,p/(p/i))+)
{
S.a[][]=p/i;
S=juzheng2(juzheng_qsm(san,min(n,p/(p/i))+-i),S);
} if(--i<n)
{
S.a[][]=;
S=juzheng2(juzheng_qsm(san,n-i),S);
} cout<<S.a[][]<<endl; }
return ;
}
hdu6395 (矩阵快速幂+分块)的更多相关文章
- 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 因为题目数据范围太大,又存在递推关系,用矩阵快速幂来加快递推. 每一项递推时 加的下取整的数随 ... 
- HDU6395 Sequence(矩阵快速幂+数论分块)
		题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里 ... 
- 杭电多校第七场 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 6395Sequence【矩阵快速幂】【分块】
		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_ ... 
- HDU6395-Sequence 矩阵快速幂+除法分块  矩阵快速幂模板
		目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. Solution ... 
- HDU6395(分段+矩阵快速幂)
		题目:http://acm.hdu.edu.cn/showproblem.php?pid=6395 给你一个式子,给出你A,B,C,D,P,n,让你求出第n项的式子Fn.(其中ABCDPn均在1e9的 ... 
- BZOJ2326 [HNOI2011]数学作业(分块矩阵快速幂)
		题意: 定义函数Concatenate (1 ..N)是将所有正整数 1, 2, …, N 顺序连接起来得到的数,如concatenate(1..5)是12345,求concatenate(1...n ... 
随机推荐
- FineReport中日期时间函数使用总结
			说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" ")引用. DATE DATE(year,month,day):返回一个 ... 
- Java 中 this 和 super 的用法总结
			his this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this 的用法在 Java 中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this 相当于是指向当 ... 
- JDK源码——单例模式
			JDK源码中单例模式的应用 1.Runtime类 Runtime类封装了Java运行时的环境.每一个java程序实际上都是启动了一个JVM进程,那么每个JVM进程都是对应这一个Runtime实例,此实 ... 
- pt和px区别 pt是逻辑像素,px是物理像素
			pt和px区别 pt是逻辑像素,px是物理像素字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢?先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点:pt就是po ... 
- rabbitMq交换机direct、topics
			一: direct 上面我用采用了广播的模式进行消息的发送,现在我们采用路由的方式对不同的消息进行过滤 发送端代码 public class RoutingSendDirect { private s ... 
- 处理smartgit 过期脚本
			@echo off @title SmartGit License Tool color 1f cls set "version=18.1" set "fpath=%AP ... 
- springboot整合JPA(简单整理,待续---)
			整合步骤 引入依赖: <dependencies> <dependency> <groupId>org.springframework.boot</group ... 
- package.json的配置理解
			一.初步理解 1. npm安装package.json时 直接转到当前项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中 ... 
- iOS进阶之正则表达式
			最近一直在弄正则表达式,于是在这里整理一下,便于日后查阅. 1.常用符号 ^:字符串的开始 $:字符串的结束 *:表示零个或若干个 ?:表示零个或一个 +:表示一个或若干个 | :表示 或 操作 . ... 
- redis的架构(一)
			redis认证 redis的认证比较简单,这里简单来说明一下怎么设置redis的认证: redis的配置文件中有一个requirepass字段,在后面直接写上对应的密码即可.默认redis的不开启认证 ... 
 
			
		