热身训练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.输 ...
随机推荐
- 【转】Linux 查看端口占用情况
Linux 查看端口占用情况可以使用 lsof 和 netstat 命令. lsof lsof(list open files)是一个列出当前系统打开文件的工具. lsof 查看端口占用语法格式: l ...
- 如何在线安全清理mysql慢日志
部门mysql数据库的服务器磁盘空间快满了,查看了下磁盘的慢日志,发现占了50多个g,百度了资料后删除成功,现在和大家分享下我清理的过程,或许有更好的办法. 1.首先连接进入mysql,查看慢日志的状 ...
- C#中List是链表吗?为什么可以通过下标访问
使用C#的同学对List应该并不陌生,我们不需要初始化它的大小,并且可以方便的使用Add和Remove方法执行添加和删除操作,但却可以使用下标来访问它的数据,它是我们常说的链表吗? List& ...
- 建立 F103C8T6 HAL库 Makefile FreeRTOS 工程
F103C8T6 HAL库 Makefile FreeRTOS 工程模板 环境 该工程的开发平台为 ARM-GCC 工具链和 Make > arm-none-eabi-gcc -v gcc ve ...
- Docker系列(27)- 容器互联--link
思考 思考一个场景,我们编写了一个微服务,database url=IP:,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以使用名字来进行访问容器吗 实践 [root@localhost ...
- Python中Tk模块简单窗口设计
Python中Tk和PyQt都可以设计小程序,区别在于:Tk界面美观度相对较差,但由于是Python的内置模块,最终生成的程序大小相比于PyQt较小. import tkinter # 导入TKint ...
- P4199-万径人踪灭【FFT】
正题 题目链接:https://www.luogu.com.cn/problem/P4199 题目大意 给出一个只包含\(a,b\)的字符串 求有多少个不连续的回文子序列(字母回文,位置对称) \(1 ...
- P4389-付公主的背包【生成函数,多项式exp】
正题 题目链接:https://www.luogu.com.cn/problem/P4389 题目大意 \(n\)种物品,第\(i\)种大小为\(v_i\),数量无限.对于每个\(s\in[1,m]\ ...
- 数据库管理软件navicate12的激活和安装
前言 太多做测试或开发的小伙伴需要写sql语句,激活版navicat版本它来了 准备软件 navicat12安装包 navicat注册机 百度网盘下载链接(永久有效): 链接:https://pa ...
- Gaussion
# Kernel density estimation import numpy as np import matplotlib.pyplot as plt from scipy.stats impo ...