热身训练1 Sequence
http://acm.hdu.edu.cn/showproblem.php?pid=6
分析:
这道题,全都是1e9,所以我们很容易想到“矩阵快速幂”。
假如说我们没有后面那个“向下取整”的东西,而将他看作一个常熟C
我们可以很轻松的得到矩阵幂的式子
然后呢,那个常熟C却会随着i变化
我们只需要整除分块,分别进行矩阵幂,这道题就解决了
#include<bits/stdc++.h>
using namespace std;
#define re register int
#define LL long long
#define int long long
const int mo = 1e9+7;
typedef int arr[10][10];
arr A, ans;
void modi(arr y, arr x)
{
arr z; memset(z, 0, sizeof(z));
for(re i=1;i<=3;++i)
{
for(re j=1;j<=3;++j)
{
for(re k=1;k<=3;++k)
{
z[i][j] = (z[i][j] + y[i][k]*x[k][j] % mo) % mo;
}
}
}
memcpy(y, z, sizeof(z));
}
int a, b, c, d, p, n, q;
void Montgomery(int pp)
{
ans[1][3] = q % mo;
memset(A, 0, sizeof(A));
A[1][2]=c%mo; A[2][2]=d%mo; A[2][1]=A[3][2]=A[3][3]=1ll;
while(pp)
{
if(pp&1) modi(ans, A);
pp>>=1;
modi(A,A);
}
}
inline void work()
{
scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&p,&n);
if(n == 1) printf("%lld\n", a);
else if(n == 2) printf("%lld\n", b);
else
{
memset(ans, 0, sizeof(ans));
ans[1][1]=a;
ans[1][2]=b;
for(re i=3;i<=n;)
{
q = p/i;
int nt;
if(q == 0) nt=n; else nt = min(n, p/q);
Montgomery(nt-i+1);
i=nt+1;
}
printf("%lld\n", ans[1][2] % mo);
} }
signed main()
{
int T;scanf("%lld",&T);
while(T--) work();
}
made by kzsn
“向着风拥抱彩虹,勇敢的向前走”
“黎明的那道光,会越过黑暗”
“打破一切恐惧我能,找到答案” ----《你的答案》阿冗
热身训练1 Sequence的更多相关文章
- HDU6299-2018ACM暑假多校联合训练1002-Balanced Sequence
这个题的题意是给你n个字符串,认定()是一种平衡的串,两个以上连续的()()也是一种平衡的串,如果一对括号里面包含一个平衡的串,这个括号也被算在这个平衡的串之内, 如(()(()))是一个长度为8的平 ...
- 数位dp & 热身训练7
数位dp 数位dp是一种计数用的dp,一般就是要统计一段区间$[L,R]$内,满足一定条件的数的个数,或者各个数位的个数. 数位dp使得暴力枚举变为满足一定状态的记忆化,更加优秀. 数位dp常常会考虑 ...
- 热身训练4 Article
Article 在这个学期即将结束时,DRD开始写他的最后一篇文章. DRD使用著名的Macrohard的软件World来写他的文章. 不幸的是,这个软件相当不稳定,它总是崩溃. DRD需要在他的文章 ...
- 热身训练4 Eighty seven
Eighty seven 简要题意: n个卡片,其中第i个卡片的数值为$a[i]$.一共q次询问,每次询问将删去其中3个卡片(可能删除若干相同的卡片)后,问能否选出10个卡片,数值之和等于87. n≤ ...
- 热身训练2 The All-purpose Zero
The All-purpose Zero 简要题意: 长度为n的数组,每个数字为S[i],$0$是一种很神奇的数字,你想要的,它都可以变! 问这个序列的最长上升子序列长度为多少? 分析: 我们将除了 ...
- 热身训练3 Palindrome
Palindrome 简要题意: 我们有一个字符串S,字符串的长度不超过500000. 求满足S[i]=S[2n−i]=S[2n+i−2](1≤i≤n)(n≥2)的子串个数. 分析: 我们能通过简 ...
- 热身训练2 GCD
题目描述 简要题意: n个数字,a1,a2,...,an m次询问(l,r),每次询问需回答 1.gcd(al,al+1,al+2,...,ar);2.gcd(ax,ax+1,ax+2,...,ay ...
- 热身训练2 Another Meaning
题目来源 简要题意: 众所周知,在许多情况下,一个词语有两种意思.比如"hehe",不仅意味着"hehe",还意味着"excuse me". ...
- 热身训练1 Calculator
题目出处:Calculator 简要题意: 你有一个确定的函数,f(x)=+...*...^...,其中共有n个操作,从左到右依次计算. 共有m次询问,我们每次询问,1.会修改f(x)中的操作:2.输 ...
随机推荐
- 机器学习——softmax回归
softmax回归 前面介绍了线性回归模型适用于输出为连续值的情景.在另一类情景中,模型输出可以是一个像图像类别这样的离散值.对于这样的离散值预测问题,我们可以使用诸如 softmax 回归在内的分类 ...
- PHP的命令行扩展Readline相关函数学习
PHP 作为一个 Web 开发语言,相对来说,命令行程序并不是它的主战场.所以很多年轻的 PHP 开发者可能连命令行脚本都没有写过,更别提交互式的命令操作了.而今天,我们带来的这个扩展就是针对 PHP ...
- php后台解决跨域
protected function _initalize() { header("content-type:text/html;charset=utf-8"); header(& ...
- 执行:vim /etc/profile,提示:Command 'vim' not found, but can be installed with:
root@uni-virtual-machine:/# vim /etc/profile Command 'vim' not found, but can be installed with: apt ...
- cmake入门:01 构建一个简单的可执行程序
一.目录结构 CMakeLists.txt:cmake 工程入口文件,包含当前目录下的工程组织信息.cmake 指令根据此文件生成相应的 MakeFile 文件. Hello.c: 源代码文件 bui ...
- cgroup之cpu关键参数
cpu.cfs_period_us specifies a period of time in microseconds (µs, represented here as "us" ...
- oracle 查看表结构语句
desc + 表名 describe命令 列出指定表的列定义,视图或同义词,或指定函数或存储过程的详述. 语法:desc[ribe] {[模式.]对象[@链接串]} 模式 表示对象驻留的架构.如果 ...
- python OSError: [Errno 22] Invalid argument: '\u202aF://text
windows10 python3 读文件的时候报的错误 原因不明时好时坏很头疼但又没办法不知道怎么解决,网上的说法都不能解决,
- PyTorch中的Batch Normalization
Pytorch中的BatchNorm的API主要有: 1 torch.nn.BatchNorm1d(num_features, 2 3 eps=1e-05, 4 5 momentum=0.1, 6 7 ...
- VMware vSphere 7 Update 3 下载
请访问原文链接:https://sysin.org/blog/vmware-vsphere-7-u3/,查看最新版.原创作品,转载请保留出处. vSphere 7 Update 3 已经宣布可用,即将 ...