题目链接:点击查看

题目大意:给出一段程序,进行优化后提交

题目分析:其实就是找规律,大水题一个,偶尔也是需要做做水题找找自信(逃)

先将题目中的程序拿下来,跑上100项,然后拿到oeis里找一下规律,就立马得到了递推式:

F(n)=F(n-1)+2*F(n-2)+1

然后就是简简单单的矩阵快速幂了,写一下矩阵然后直接上代码了:

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

F(n-1) F(n-2) 1

辅助矩阵:

1 1 0
2 0 0
1 0 1

答案矩阵:

F(n) F(n-1) 1

因为我从n=3开始的,所以对n=1和n=2特判一下即可

一点坑都没有的大水题。。上代码:

#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;int mod;const int N=3;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);int n;while(scanf("%d%d",&n,&mod)!=EOF){if(n==1){printf("%d\n",1%mod);continue;}else if(n==2){printf("%d\n",2%mod);continue;}Ma st;st.a[0][0]=2;st.a[0][1]=1;st.a[0][2]=1;Ma ans;ans.a[0][0]=1;ans.a[1][0]=2;ans.a[2][0]=1;ans.a[0][1]=1;ans.a[2][2]=1;ans=q_pow(ans,n-2);printf("%lld\n",(st*ans).a[0][0]);}return 0;
}

HDU - 4990 Reading comprehension(矩阵快速幂,水题)相关推荐

  1. hdu 2842 Chinese Rings 矩阵快速幂

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

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

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

  3. 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] 类似于斐波那契数列的递推式子吧, 但 ...

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

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

  5. hdu 4990 Reading comprehension

    题意:读一段程序,输出程序的输出.程序的大意是,输入n,m,一个数列an,a1=1,an=(an-1)*2+1(n为奇数),an=(an-1)*2(n为偶数).输出an mod m. 思路:这个数列奇 ...

  6. POJ3070矩阵快速幂简单题

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

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

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

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

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

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

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

最新文章

  1. matlab 仿照案例-目标检测
  2. JAVA进阶教学之(产生随机数)
  3. 我对C++内存分配方式的一点看法
  4. 离线处理需要做哪些工作_游戏配音需要做哪些工作?
  5. 九九乘法表 利用for语句
  6. 算法:First Missing Positive(求缺失的第一个正整数)
  7. recvmsg和sendmsg函数
  8. 电脑公司特别版常用软件盘
  9. 软件测试人员必备工具介绍--如何滚屏抓取图片-SnagIt篇(图)
  10. JDK的安装 - JDK8(1.8.0_301)
  11. 人工智能产品经理及十种AI常用算法
  12. 汉诺塔游戏程序可以通过“递归”来实现?但你未必清楚其根本原因。
  13. c++11的regex使用
  14. php yii2 ddd,Xunsearch SDK for PHP/yii2
  15. vim简单用法-配合pycharm
  16. Unity3D_最简单的开始界面_结束界面
  17. Configuring incomplete, errors occurred!
  18. [运动控制算法]Pure Pursuit纯路径跟踪算法
  19. BAV99与TVS在静电应用的比较
  20. 微软股价下跌 预示纳德拉与华尔街蜜月期终结?

热门文章

  1. 初识Sentinel
  2. SpringAMQP--WorkQueue模型
  3. 反射获取成员变量并使用【应用】
  4. flume高可用-balance-测试运行
  5. spring配置详解-初始化销毁方法
  6. C语言创建指针需要给大小吗,如何用c语言创建一个指针(示例代码)
  7. mysql 光标的作用_Mysql那些事儿之(十四)光标的使用_MySQL
  8. linux字符设备开发
  9. NSTimeInterval和CMTime
  10. bzoj 3343 教主的魔法 分块