P5175 数列(矩阵快速幂)

P5175 数列

anb=(x×an−1+y×an−2)2x2×an−12+y2×an−22+2×x×y×an−1an−2x2×an−12+y2×an−22+2×x×y×an−2(x×an−2+y×an−3)x2×an−12+y2×an−22+2×x×y×(x×an−22+y×an−2×an−3)a_n ^ b = \left(x \times a_{n - 1} + y \times a_{n - 2}\right) ^ 2\\ x ^ 2 \times a_{n - 1} ^ 2 + y ^ 2 \times a_{n - 2} ^ 2 + 2 \times x \times y \times a_{n - 1} a_{n - 2}\\ x ^ 2 \times a_{n - 1} ^ 2 + y ^ 2 \times a_{n - 2} ^ 2 + 2 \times x \times y \times a_{n - 2} \left(x \times a_{n - 2} + y \times a_{n - 3} \right)\\ x ^ 2 \times a_{n - 1} ^ 2 + y ^ 2 \times a_{n - 2} ^ 2 + 2 \times x \times y \times \left(x \times a_{n - 2} ^ 2 + y \times a_{n - 2} \times a_{n - 3} \right)\\ anb=(x×an1+y×an2)2x2×an12+y2×an22+2×x×y×an1an2x2×an12+y2×an22+2×x×y×an2(x×an2+y×an3)x2×an12+y2×an22+2×x×y×(x×an22+y×an2×an3)
Sn+1=Sn+an+12S_{n + 1} = S_{n} + a_{n + 1} ^ 2Sn+1=Sn+an+12,

an+12=x2×an+y2×an−1+2×x×y×an×an−1a_{n + 1} ^ 2 = x ^ 2 \times a_n + y ^ 2 \times a_{n - 1} + 2 \times x \times y \times a_n \times a_{n - 1}an+12=x2×an+y2×an1+2×x×y×an×an1,

an+1an=x×an2+y×an×an−1a_{n + 1} a_n = x \times a_n ^ 2 + y \times a_{n} \times a_{n - 1}an+1an=x×an2+y×an×an1,

[Snan2an−12anan−1]\begin{bmatrix}S_n & a_n ^ 2 & a_{n - 1} ^ 2 & a_n a_{n - 1}\end{bmatrix}[Snan2an12anan1] ×\times× [1000x2x21xy2y2002×x×y2×x×y0y]\begin{bmatrix} 1 & 0 & 0 & 0\\ x ^ 2 & x ^ 2 & 1 & x\\ y ^ 2 & y ^ 2 & 0 & 0\\ 2 \times x \times y & 2 \times x \times y & 0 & y\end{bmatrix}1x2y22×x×y0x2y22×x×y01000x0y

#include <bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod;
}struct Matrix {int a[4][4];
};Matrix operator * (Matrix a, Matrix b) {Matrix ans;for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {ans.a[i][j] = 0;for (int k = 0; k < 4; k++) {ans.a[i][j] = add(ans.a[i][j], 1ll * a.a[i][k] * b.a[k][j] % mod);}}}return ans;
}int main() {
//  freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);int T;scanf("%d", &T);while (T--) {long long n;int a1, a2, x, y;scanf("%lld %d %d %d %d", &n, &a1, &a2, &x, &y);if (n == 1) {printf("%d\n", 1ll * a1 * a1 % mod);}else if (n == 2) {printf("%d\n", add(1ll * a1 * a1 % mod, 1ll * a2 * a2 % mod));}else {Matrix ans = {add(1ll * a1 * a1 % mod, 1ll * a2 * a2 % mod), int(1ll * a2 * a2 % mod), int(1ll * a1 * a1 % mod), int(1ll * a1 * a2 % mod),0, 0, 0, 0,0, 0, 0, 0,0, 0, 0, 0,};Matrix a = {1, 0, 0, 0,int(1ll * x * x % mod), int(1ll * x * x % mod), 1, x,int(1ll * y * y % mod), int(1ll * y * y % mod), 0, 0,int(2ll * x * y % mod), int(2ll * x * y % mod), 0, y};n -= 2;while (n) {if (n & 1) {ans = ans * a;}a = a * a;n >>= 1;}printf("%d\n", ans.a[0][0]);}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring bean 的初始化

先mark&#xff1a; https://www.cnblogs.com/yxh1008/p/6012230.html Bean的多种初始化、destory方法执行顺序 https://segmentfault.com/a/1190000014105687 https://blog.csdn.net/caihaijiang/article/details/8629725 Spring bean的初始化过程 https://www.jianshu.com…

编写优雅代码,从挖掉恶心的if/else 开始

背景长话短说&#xff0c; 作为开发人员经常需要根据条件灵活查询数据库&#xff0c;不管你是用rawsql 还是EFCore&#xff0c; 以下类似伪代码大家都可能遇到&#xff1a;特别是在大数据产品或者物联网产品中&#xff0c;字段甚多&#xff1b;if/else 写到死&#xff0c;一边写…

Spring bean 初始化顺序

InitializingBean, init-method 和 PostConstruct 1、概述 从接口的名字上不难发现&#xff0c;InitializingBean 的作用就是在 bean 初始化后执行定制化的操作。 Spring 容器中的 Bean 是有生命周期的&#xff0c;Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特…

不要666升级版(数位DP,三次方和)

不要666升级版 ∑(presuc)2npre22pre∑suc∑suc2\sum(pre suc) ^ 2\\ n \times pre ^ 2 2 \times pre \sum suc \sum suc ^ 2\\ ∑(presuc)2npre22pre∑suc∑suc2 ∑(presuc)3∑(pre33pre2suc3presuc2suc3)npre33pre2∑suc3pre∑suc2∑suc3\sum (pre suc) ^ 3\\ \sum \left…

.NET Conf 2019 大会上发布.NET Core 3.0

北京时间今天凌晨如期在.NET Conf 上发布.NET Core 3.0,Keynotes 由Scott Hunter 主演&#xff0c;主要围绕.NET Core 3.0的新特性和社区展开。多功能性是.Net Core 成为我们的生活一部分的最好解释。如果您是Web开发人员还是想开发桌面或移动应用程序&#xff0c;如果您是游戏…

Spring AOP实现原理

先说结论&#xff1a; Spring AOP采用的是JDK动态代理 CGLIB动态代理模式。当当前类为接口的实现时&#xff0c;采用JDK动态代理&#xff0c;否则用CGLIB、 1、AOP 的存在价值 在传统 OOP 编程里以对象为核心&#xff0c;整个软件系统由系列相互依赖的对象所组成&#xff0c…

J. Product of GCDs(莫比乌斯反演)(2021牛客暑期多校训练营2)

Product of GCDs ∏d1nd∑[gcd⁡(s1d,s2d,…,skd)1]∏d1nd∑i1ndμ(i)Cf[id]k\prod_{d 1} ^{n} d ^{\sum[\gcd(\frac{s_1}{d}, \frac{s_2}{d}, \dots, \frac{s_k}{d}) 1]}\\ \prod_{d 1} ^{n} d ^{\sum\limits_{i 1} ^{\frac{n}{d}} \mu(i) C_{f[id]} ^{k}}\\ d1∏n​d∑[g…

微软推出Python免费在线教程视频

开源中国曾报道过最近微软针对 Python 初学者&#xff0c;推出了一套免费的教程视频。这套视频名为 Python for Beginners&#xff0c;该在线教学视频由微软高级项目经理 Christopher Harrison、以及微软 AI Gaming 的商业开发经理 Susan Ibach 共同讲解&#xff0c;在课程中加…

徒手实现Spring的IOC

Mark https://www.jianshu.com/p/9fe5a3c25ab6 https://juejin.im/post/5abe75f351882577b45f2336 https://blog.csdn.net/u012373815/article/details/74937913 https://xilidou.com/2018/01/08/spring-ioc/ IOC原理介绍&#xff1a; http://www.importnew.com/14751.htm…

HDU6956-Pass!(2021杭电多校一)(BSGS)

Pass! f(1)0,f(2)n−1,f(t)(n−2)f(t−1)(t−1)f(t−2)f(1) 0, f(2) n - 1, f(t) (n - 2) \times f(t - 1) (t - 1) \times f(t - 2)f(1)0,f(2)n−1,f(t)(n−2)f(t−1)(t−1)f(t−2)&#xff0c;考虑对通项两边同时加一个xf(t−1)x \times f(t - 1)xf(t−1)。 可以得到f(t…

推荐neter常用优秀开源项目系列之一

.net社区有很多优秀的开源项目&#xff0c;我们今天先推荐6个开源项目&#xff1b;1.MassTransitMassTransit 是一个自由、开源、轻量级的消息总线, 用于使用. NET 框架创建分布式应用程序。MassTransit在现有消息传输上提供了一组广泛的功能, 从而使开发人员能够友好地使用基于…

spring四种依赖注入方式

平常的java开发中&#xff0c;程序员在某个类中需要依赖其它类的方法&#xff0c;通常是new一个依赖类再调用类实例的方法&#xff0c;这种开发存在的问题是new的类实例不好统一管理。 spring提出了依赖注入的思想&#xff0c;即依赖不由程序员控制&#xff0c;而是通过spring…

3085 吃遍赴丝码(分治)

3085 吃遍赴丝码 给定一个长度为nnn的数组&#xff0c;求∑i1n∑jin(j−i1)min{ai,…,aj}max{ai,…,aj}\sum\limits_{i 1} ^{n} \sum\limits_{j i} ^{n} (j - i 1) \times min\{a_i, \dots, a_j\} \times max\{a_i, \dots, a_j\}i1∑n​ji∑n​(j−i1)min{ai​,…,aj​}max…

聊聊高并发下库存加减那些事儿——“异步扣减库存”

聊聊高并发下库存加减那些事儿不定期福利发放哦聊聊高并发下库存加减那些事儿背景一般在日常开发中经常会遇到打折促销&#xff0c;秒杀活动&#xff0c;就如拼多多最近的4999抢券买爱疯11促销活动&#xff0c;毕竟谁的钱也不是大风刮来的&#xff0c;有秒杀有促销必定带来大量…

什么是MVC

什么是MVC&#xff1f; MVC全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)的缩写&#xff0c;一种软件设计典范。 用一种业务逻辑、数据、界面显示分离的方法&#xff0c;将业务逻辑聚集到一个部件里面&#xf…

P3242 [HNOI2015] 接水果(整体二分、扫描线)

P3242 [HNOI2015] 接水果 给定一棵树&#xff0c;定义给定了ppp个盘子&#xff0c;每个盘子是树上u,vu, vu,v两点的路径&#xff0c;且盘子有权值&#xff0c;定义水果&#xff0c;水果也是树上u,vu, vu,v两点间的路径。 有qqq个询问&#xff0c;每次给定u,v,ku, v, ku,v,k&a…

SpringMVC 、Struts的区别

先说结论&#xff1a;目前Spring MVC已经一统江山&#xff0c;Struts正在被抛弃 1、Spring MVC原理 Spring 体系&#xff1a; Spring MVC工作流程图 SpringMVC的工作流程描述 1. 用户向服务器发送请求&#xff0c;请求被Spring前端控制Servelt DispatcherServlet捕获&#x…

P3700 [CQOI2017]小Q的表格(反演、分块)

P3700 [CQOI2017]小Q的表格 给定一个大小为nnn \times nnn的表格&#xff0c;初始时i,ji, ji,j位置上填的是f(i,j)ijf(i, j) i \times jf(i,j)ij&#xff0c;有mmm个操作&#xff0c;每次操作给定a,b,x,ka, b, x, ka,b,x,k&#xff0c;把格子a,ba, ba,b上的值改成xxx&#xf…

基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理

说明&#xff1a;.NET Core版本为:2.2 AdminLTE版本为:2.4.18 Bootstrap版本为:3.4.1 font-awesome版本为:4.7.01、新建项目&#xff1a;AdminLteDemo&#xff0c;添加区域Admin 在Areas/Admin/Views文件夹添加文件并分别添加如下代码&#xff1a;_ViewImports.cshtmladdTagHel…

Spring boot——起步依赖

一、起步依赖 1、是什么 本质上是一个Maven项目对象模型&#xff08;Project Object Model&#xff0c; POM&#xff09;&#xff0c; 定义了对其他库的传递依赖&#xff0c;这些东西加在一起即支持某项功能。 比如&#xff1a; spring-boot-dependencies^ spring-boot-pare…