题意:

已知\(A,B,C,D,P,n\)以及
\[ \left\{ \begin{aligned} & F_1 = A \\ & F_2 = B\\ & F_n = C*F_{n-2} + D*F_{n-2}+\lfloor(\frac{P}{n})\rfloor \end{aligned} \right. \]
,求\(F_n \ mod\ (1e9e+7)\),\(n \leq 1e9\)

思路:

显然\(\lfloor(\frac{P}{n})\rfloor\)相同的情况是有区间的,那么直接分区间分段矩阵快速幂。

代码:

#include<map>
#include<set>
#include<queue>
#include<stack>
#include<ctime>
#include<cmath>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 100000 + 5;
const int INF = 0x3f3f3f3f;
const ull seed = 131;
const ll MOD = 1e9 + 7;
const double eps = 1e-8;
using namespace std;
struct Mat{ll s[3][3];Mat(){memset(s, 0, sizeof(s));}void init(){for(int i = 0; i < 3; i++)s[i][i] = 1;}
};
Mat pmul(Mat a, Mat b){Mat c;for(int i = 0; i < 3; i++){for(int j= 0; j < 3; j++){for(int k = 0; k < 3; k++){c.s[i][j] = (c.s[i][j] + a.s[i][k] * b.s[k][j]) % MOD;}}}return c;
}
Mat ppow(Mat a, ll b){Mat ret;ret.init();while(b){if(b & 1) ret = pmul(ret, a);a = pmul(a, a);b >>= 1;}return ret;
}
int main(){int T;scanf("%d", &T);while(T--){ll a, b, c, d, p, n;scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &c, &d, &p, &n);Mat f, t, temp;t.s[0][0] = d, t.s[1][0] = c, t.s[2][0] = 1, t.s[0][1] = 1, t.s[2][2] = 1;f.s[0][0] = b, f.s[0][1] = a;for(int i = 3; i <= n; ){ll l, r, pn = p / i;if(pn > 0)l = i, r = min(n, (p - p % pn) / pn);elsel = i, r = n;f.s[0][2] = pn;temp = ppow(t, r - l + 1);f = pmul(f, temp);i = r + 1;}printf("%lld\n", f.s[0][0]);}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/11417739.html

HDU 6395 Sequence(分段矩阵快速幂)题解相关推荐

  1. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  2. 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂

    Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...

  3. HDU 5950 Recursive sequence(矩阵快速幂)

    题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...

  4. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)

    题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...

  5. HDU 2256Problem of Precision(矩阵快速幂)

    题意 求$(\sqrt{2} + \sqrt{3})^{2n} \pmod {1024}$ $n \leqslant 10^9$ Sol 看到题解的第一感受:这玩意儿也能矩阵快速幂??? 是的,它能q ...

  6. hdu 2842 Chinese Rings 矩阵快速幂

    分析: 后面的环能不能取下来与前面的环有关,前面的环不被后面的环所影响.所以先取最后面的环 设状态F(n)表示n个环全部取下来的最少步数 先取第n个环,就得使1~n-2个环属于被取下来的状态,第n-1 ...

  7. HDU - 4990 Reading comprehension(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:给出一段程序,进行优化后提交 题目分析:其实就是找规律,大水题一个,偶尔也是需要做做水题找找自信(逃) 先将题目中的程序拿下来,跑上100项,然后拿到oeis里找一下规律 ...

  8. HDU - 5015 233 Matrix(矩阵快速幂)

    题目链接:点击查看 题目大意:初始化:第一行依次为233,2333,23333....第一列依次为a0,a1,a2....(题目中会给出),再给出递推公式:,求矩阵中第n行m列的数字是多少 题目分析: ...

  9. HDU (1575)Tr A ---矩阵快速幂

    Tr A Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每 ...

  10. 考研路茫茫――单词情结 HDU - 2243(ac自动机 + 矩阵快速幂)

    考研路茫茫--单词情结 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

最新文章

  1. Golang 元素值在经过通道传递时会被复制,这个复制是浅复制
  2. vue和layui哪个更好用_幕布和Mind+思维导图哪个更好用?
  3. Vivado生成bitstream报错,DRC NSTD-1与DRC UCIO-1]
  4. 御术:比能力更重要的是你的底层操作系统
  5. JavaScript的语音识别
  6. 采用多播传送FIX行情数据的推荐方案
  7. 把光标放在EditText中文本最后
  8. 微课|Python三种方法统计各分数段内的人数(17分钟)
  9. JavaScript unshift()函数移入数据到数组第一位
  10. 渗透实例:The Game Of Bob_1.0.1
  11. opencv学习第6课官方练习实现 Create a Paint application with adjustable colors and brush radius using trackbars
  12. Vue.js 2.0 和 React、Augular等其他框架的全方位对比
  13. 学生管理系统的源代码
  14. mysql 存储用户头像_微信授权后用户头像保存到服务器实现方法
  15. 怎样进入金蝶服务器修改参数,金蝶KIS专业版启用后如何后台修改系统参数
  16. iOS 逆向编程(三)实操越狱详细流程
  17. python十进制转化为二进制
  18. 集成QQ钱包---踩坑
  19. 阿德莱德大学计算机专业学费,2020年阿德莱德大学计算机科学专业研究生申请条件及世界排名|学费介绍...
  20. Redis的常用淘汰策略以及算法实现

热门文章

  1. TimescaleDB 简单试用
  2. [20180423]表空间闪回与snapshot standby
  3. 【Java6学习笔记】多线程编程中使用volatile保障原子性
  4. 使用PHP来简单的创建一个RPC服务
  5. 号外号外~~OSS监控服务上线啦!!
  6. Android 一步步教你从ActionBar迁移到ToolBar
  7. Swing的Look And Feel机制研究
  8. 用hadoop运行一个简单程序WordCount
  9. Android 时间格式转换
  10. 2021 软件开发的 5 大趋势,低代码、无代码得到了验证!