题目:点击打开链接

一个矩阵乘法问题,(1+sqrt(2))的n次方!

#include<bits/stdc++.h>using namespace std;
#define maxn (1000000007)
struct Mat{long long mat[2][2];
};
Mat init(Mat x){x.mat[0][0]=1;x.mat[0][1]=2;x.mat[1][0]=1;x.mat[1][1]=1;return x;
}
Mat operator+(Mat a,Mat b)
{Mat c;int i,j;for (i=0;i<2;i++){for (j=0;j<2;j++)c.mat[i][j] = a.mat[i][j]+b.mat[i][j];}return c;
}
Mat operator*(Mat a,Mat b)
{int i,j,k;Mat c;for (i=0;i<2;i++){for (j=0;j<2;j++){c.mat[i][j] = 0;for (k=0;k<2;k++){c.mat[i][j]+=(a.mat[i][k]*b.mat[k][j])%maxn;c.mat[i][j]=(c.mat[i][j]+maxn)%maxn;}//c.mat[i][j]%=MOD;}}return c;
}
Mat operator^(Mat a,long long x)
{Mat p=a;Mat q;q=init(q);while (x>=1){if(x%2==1)p = p*q;x/=2;q = q*q;}return p;
}
int main(){long long n;cin>>n;Mat ans;ans.mat[0][0]=1;ans.mat[0][1]=0;ans.mat[1][0]=0;ans.mat[1][1]=1;if(n==0){printf("1\n");}else if(n%2==1){ans=ans^n;printf("%I64d\n",(ans.mat[1][0]*ans.mat[0][1])%maxn);}else{ans=ans^n;printf("%I64d\n",(ans.mat[0][0]*ans.mat[1][1])%maxn);}return 0;
}

矩阵模板 51nod 算法马拉松分解问题相关推荐

  1. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    51nod 算法马拉松18 B 非010串 矩阵快速幂 非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串 ...

  2. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

  3. 51Nod 算法马拉松23

    A : 打表找规律 B : 数学期望 C : 拓扑排序+DP D : 状压DP E : 莫队+树状数组+卡常数 F : Unfinished 听说省选推迟了一个月,整个人都不好了.放假打了一场51No ...

  4. 51nod 算法马拉松4 B递归(YY)

    递归 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 函数f(n,m) { 若n=1或m=1返回a[n][m]; 返回f(n-1,m)异或f(n,m-1); } 读入2<=n, ...

  5. 【51NOD 1501】【51NOD 算法马拉松19】石头剪刀布威力加强版

    Description 小A和小B在玩石头剪刀布,他们每个人写出一个序列. 小A写出了n个数. 小B写出了m个数. 其中0代表石头,1代表剪刀,2代表布 0>1,1>2,2>0. 他 ...

  6. 51nod算法马拉松20 C、战忽局的手段

    战忽局的手段 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 众所周知,有一个神秘的组织--战忽局,在暗中保护着我们.在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽 ...

  7. 矩阵乘法的算法实现 [转载]

    一般矩阵乘法算法: 原理:矩阵相乘最重要的方法是一般矩阵乘积.它只有在第一个矩阵的栏数(column)和第二个矩阵的列数(row)相同时才有定义.一般单指矩阵乘积时,指的便是一般矩阵乘积.若A为m×n ...

  8. 推荐算法——非负矩阵分解(NMF)

    1. 矩阵分解回顾 在博文推荐算法--基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解,从而实现对未打分项进行打分.矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品矩阵 ...

  9. Hessian矩阵在XGBoost算法的应用小结

    来源:机器学习算法那些事本文约1100字,建议阅读5分钟 本文深入浅出的总结了Hessian矩阵在XGboost算法中的两种应用,即权重分位点算法和样本权重和算法 . 前言 Hessian矩阵最常见的 ...

最新文章

  1. 在Yolov5 Yolov4 Yolov3 TensorRT 实现Implementation
  2. 进程的静止和活动状态
  3. 阿里巴巴Java开发 之 编程规约
  4. 带圆圈的数字和markdown常用表达式记录(持续更新中)
  5. 机器学习项目 - ctr 电商点击率预估
  6. Flickr网站架构分析
  7. 第十一章 枚举与泛型总结
  8. The server encountered an unexpected condition that prevented it from fulfilling the request
  9. 十五、Spring cloud 消息总线(Bus)
  10. 零基础掌握计算机入门
  11. 形式验证 formality的设置及fm_shell使用
  12. JAVA GUI(图形用户界面)
  13. vivo怎么切换为Android,vivox60怎么切换系统
  14. 抖音小程序配置webview域名
  15. hibernate_2
  16. buildroot教程
  17. Python 国内镜像
  18. 十款很不错的磁盘碎片整理工具
  19. 世界最小量子计算机诞生,离子阱量子技术或成为最终赢家?
  20. 无线充电Qi通信协议分析-转载

热门文章

  1. Linux 命令--SS
  2. 【2020年保研记】浙大软院+中科院信工所+北师大人工智能学院+华中科技网安学院+四川大学网安学院+中山大学系统科学与工程学院
  3. caffe-ristretto:定点举例
  4. 第二课等效变化与基尔霍夫定律
  5. 如何优雅地读写HttpServletRequest和HttpServletResponse的请求体
  6. Ubuntu更新源以及搜狗输入法安装
  7. 图像金字塔:概念及实现
  8. C#根据出生日期计算年龄的源码
  9. iOS-申请苹果开发者账号之邓白氏编码查询
  10. 王道学习笔记,计算机网络