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

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

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

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

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

  3. 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里是不变的,可以数论分块,再在每一段里 ...

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

  5. hdu 6395Sequence【矩阵快速幂】【分块】

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

  6. HDU - 6395 Sequence (整除分块+矩阵快速幂)

    定义数列: $\left\{\begin{eqnarray*} F_1 &=& A \\ F_2 &=& B \\ F_n &=& C\cdot{}F_ ...

  7. HDU6395-Sequence 矩阵快速幂+除法分块 矩阵快速幂模板

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面. Solution ...

  8. HDU6395(分段+矩阵快速幂)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6395 给你一个式子,给出你A,B,C,D,P,n,让你求出第n项的式子Fn.(其中ABCDPn均在1e9的 ...

  9. BZOJ2326 [HNOI2011]数学作业(分块矩阵快速幂)

    题意: 定义函数Concatenate (1 ..N)是将所有正整数 1, 2, …, N 顺序连接起来得到的数,如concatenate(1..5)是12345,求concatenate(1...n ...

随机推荐

  1. tiny6410 启动参数

    baudrate=115200 bootargs=noinitrd root=/dev/nfs nfsroot=192.168.1.116:/home/suxuandong/Documents/com ...

  2. 【Access】数据库四门功课--[增删改查]基础篇

    一.增 以userinfo为例 1.增加一条完整的数据 INSERT INTO userinfo VALUES (1, 2, 3, 4); 基本格式:INSERT INTO AAA VALUES (X ...

  3. sql查询语句如何执行

    MySQL 可以分为 Server 层和存储引擎层两部分. 查询缓存: Mysql拿到一个查询请求之后,会先查询缓存,之前执行过的语句及结果可能会以Key-Value的形式被存在缓存中,Key是查询语 ...

  4. ubuntu 17.10 安装mvn

    首先,我用的系统是Ubuntu17.10,编辑器用的 vim ,Maven以 3.5.0为例 第一步,去官网下载maven. 官网下载页面.png 第二步,解压到/opt/maven目录(我安装在这个 ...

  5. mongo 修改器

    [$inc] 作用:修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作. Example: db.b.update({"uid" : "2 ...

  6. python学习之文本文件上传

    最近用python的flask框架完成了一个最基本的文本文件上传,然后读取. 前端用的Angular的ng2-file-upload完成文件上传,后端用flask接收上传的文件,接着做处理. 在交互的 ...

  7. IIS的地址指向

    地址指向 1)AuthwebAPI  修改web.xml文件 <connectionStrings> data source 改成当前虚拟环境的IP指向 </connectionSt ...

  8. Linux笔记 #10# 用于支持Web应用开发&部署&配置的一些自定义脚本

    索引 一.本地开发与测试相关脚本 1.startup.sh 2.shutdown.sh 3.catalina-out.sh 4.localhost_access_log.sh 5.上传本地文件到服务器 ...

  9. 算法(第四版)C# 习题题解——2.4

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...

  10. 读Vue源码 (依赖收集与派发更新)

    vue的依赖收集是定义在defineReactive方法中,通过Object.defineProperty来设置getter,红字部分主要做依赖收集,先判断了Dep.target如果有的情况会执行红字 ...