热身训练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.输 ...
随机推荐
- Spring系列之集成MongoDB的2种方法
MongoDB是最流行的NoSQL数据库,SpringBoot是使用Spring的最佳实践.今天带大家讲一讲SpringBoot集成MongoDB的两种方式,MongoDB的安装自行去官网查询,本地开 ...
- php--laravel --debug--mac
1>安装debug 一.下载xdebug文件 1.将phpinfo();的信息全部输入网址中的框,得到适配的xdebug版本: 网址:http://xdebug.org/wizard.php 2 ...
- spy++查找窗口句柄
spy++可以用来查找桌面程序(c/s)的窗口句柄,实现自动化测试. def find_idxSubHandle(pHandle, winClass, index=0): ""&q ...
- 『GoLang』数组与切片
数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构):这种类型可以是任意的原始类型例如整型.字符串或者自定义类型. 数组长度必须是一个常量表达式,并且必须是一个非负 ...
- PolarDB PostgreSQL DDL同步原理
概述 在共享存储一写多读的架构下,数据文件实际上只有一份.得益于多版本机制,不同节点的读写实际上并不会冲突.但是有一些数据操作不具有多版本机制,其中比较有代表性的就是文件操作.多版本机制仅限于文件内的 ...
- P3288-[SCOI2014]方伯伯运椰子【0/1分数规划,负环】
正题 题目链接:https://www.luogu.com.cn/problem/P3288 题目大意 给出\(n\)个点\(m\)条边的一张图,没条边\(i\)流量为\(c_i\),费用是\(d_i ...
- NOI.AC#2007-light【根号分治】
正题 题目链接:http://noi.ac/problem/2007 题目大意 \(n\)个格子排成一排,每个格子有一个\(0/1\)和一个颜色.开始每个格子都是\(0\),\(q\)次操作取反一个颜 ...
- 第21篇-加载与存储指令之iload、_fast_iload等(3)
iload会将int类型的本地变量推送至栈顶.模板定义如下: def(Bytecodes::_iload , ubcp|____|clvm|____, vtos, itos, iload , _ ); ...
- 题解 Weak in the Middle
题目传送门 Description 有一个长度为 \(n\) 的序列 \(a_{1,2,...,n}\) ,每次可以删掉 \(a_i\),当 \(\min(a_{i-1},a_{i+1})>a_ ...
- 洛谷3703 SDOI2017树点涂色(LCT+线段树+dfs序)
又一道好题啊qwqqqq 一开始看这个题,还以为是一个树剖的什么毒瘤题目 (不过的确貌似可以用树剖啊) qwq这真是一道\(LCT\)维护颜色的好题 首先,我们来一个一个操作的考虑. 对于操作\(1\ ...