题目链接:点击查看

题目大意:给出定义:

现在依次给出n,A0,AX,AY,B0,BX,BY

求Aod的第n项对1e9+7取模后的结果

题目分析:

简单矩阵快速幂

首先化简一下:

初始矩阵:(取n=1即可)

1

辅助矩阵:

1 0 0 0 0
1 AX*BX 0 0 0
0 AX*BY AX 0 0
0 BX*AY 0 BX 0
0 AY*BY AY BY 1

答案矩阵:

1

注意几个小坑:

  1. 需要特判n==0时输出0
  2. 初始参数给的很大,相乘后需要立即取模,不然在运算的过程中会爆long long

然后套模板即可,上代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#define Pi acos(-1.0)
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int mod=1e9+7;const int N=5;struct Ma
{LL a[N][N];Ma(){memset(a,0,sizeof(a));}friend Ma operator*(const Ma& a,const Ma& b){Ma ans;for(int i=0;i<N;i++)for(int j=0;j<N;j++){ans.a[i][j]=0;for(int k=0;k<N;k++){ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;}}return ans;}
};Ma q_pow(Ma a,LL b)
{Ma ans;for(int i=0;i<N;i++)ans.a[i][i]=1;while(b){if(b&1)ans=ans*a;a=a*a;b>>=1;}return ans;
}int main()
{
//  freopen("input.txt","r",stdin);LL n;while(scanf("%lld",&n)!=EOF){LL a0,ax,ay,b0,bx,by;scanf("%lld%lld%lld%lld%lld%lld",&a0,&ax,&ay,&b0,&bx,&by);if(n==0)//特判0 {printf("0\n");continue;}Ma st;st.a[0][0]=0;st.a[0][1]=a0*b0%mod;//日常模一模st.a[0][2]=a0;st.a[0][3]=b0;st.a[0][4]=1;Ma ans;ans.a[0][0]=1;ans.a[1][0]=1;ans.a[1][1]=ax*bx%mod;//记得取模ans.a[2][1]=ax*by%mod;ans.a[3][1]=bx*ay%mod;ans.a[4][1]=ay*by%mod;ans.a[2][2]=ax;ans.a[4][2]=ay;ans.a[3][3]=bx;ans.a[4][3]=by;ans.a[4][4]=1;ans=q_pow(ans,n);printf("%lld\n",(st*ans).a[0][0]);}return 0;
}

HDU - 4686 Arc of Dream(矩阵快速幂,水题)相关推荐

  1. HDU4686——Arc of Dream矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686 题目大意: 已知a0=A0, ai=Ax*ai-1+Ay; b0=B0, bi=Bx*bi-1 ...

  2. HDU4686 Arc of Dream —— 矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4686 Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memo ...

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

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

  4. POJ3070矩阵快速幂简单题

    题意:       求斐波那契后四位,n <= 1,000,000,000. 思路:        简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...

  5. 又见斐波那契~矩阵快速幂入门题

    链接:https://www.nowcoder.com/acm/contest/105/G 来源:牛客网 题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对 ...

  6. 51nod 1113 矩阵快速幂 模板题

    1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计 ...

  7. HDU 4686 Arc of Dream(递归矩阵加速)

    标题效果:你就是给你一程了两个递推公式公式,第一个让你找到n结果项目. 注意需要占用该公式的复发和再构造矩阵. Arc of Dream Time Limit: 2000/2000 MS (Java/ ...

  8. hdu 4686 Arc of Dream

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686 题目描述: 题目上说的很清楚. 解题思路: 就是递推,用快速幂+构造矩阵解决,因为n的取值范围 ...

  9. HDU - 5411 CRB and Puzzle 矩阵快速幂

    HDU - 5411 考虑直接dp会T, 用矩阵优化一下就好了. #include<bits/stdc++.h> #define LL long long #define LD long ...

最新文章

  1. Centos配置国内yum源
  2. ORA-01658: 无法为表空间space中的段创建 INITIAL
  3. 走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全
  4. 大数据WEB阶段(五)jQuery
  5. 电脑软件:5个实用的Windows软件,大幅度提高你的工作效率!
  6. C - Cats Gym - 102875C
  7. VC6编译卡死之解决办法
  8. 唯一《可解释机器学习》中文书来了:复旦研究生翻译,原作者转发点赞
  9. 11选5下期算法_玫瑰2020196期福彩3D推荐:双胆2、6,和值看好11
  10. Dirichlet Process 和 Dirichlet Process Mixture模型
  11. iOS字体适配方法总结
  12. Visual Studio2012 安装教程
  13. 嵌入式工程师必须知道的一些好网站
  14. pygame模块实现乌龟吃鱼游戏案例
  15. 企业微信外部联系人回调事件
  16. 当今主流浏览器内核简介
  17. 【Python】Marshmallow:Python中的“棉花糖”
  18. LeetCode 简单算法题
  19. 制作动态图表,没有比这个方法更简单的了
  20. 数据库中LIMIT和 OFFSET的理解

热门文章

  1. 什么是认证、授权、会话
  2. SpringSecurity注销功能
  3. 标记-清除(Mark-Sweep)
  4. 阻塞(Block)和非阻塞(Non-Block)
  5. ConcurrentHashMap的初步使用及场景
  6. MyBatis 源码解读-配置解析过程
  7. 高仿真的类-请求url
  8. RocketMQ消息的存储结构
  9. SET key value [EX seconds] [PX milliseconds] [NX|XX]
  10. vue指令-循环指令