LightOJ 1070 Algebraic Problem (推导+矩阵快速幂)
题目链接:LightOJ 1070 Algebraic Problem
题意:已知a+b和ab的值求a^n+b^n。结果模2^64。
思路:
1.找递推式
得到递推式之后就是矩阵快速幂了
注意:模2^64,定义成unsigned long long 类型,因为无符号类型超过最大范围的数与该数%最大范围 的效果是一样的。
AC代码:
#include<stdio.h>
#include<string.h>
#define LL unsigned long longstruct Matrix {LL m[10][10];
};
LL n;
Matrix geti(LL n) {LL i;Matrix b;memset(b.m,0,sizeof b.m);for(i=0;i<2;i++)b.m[i][i]=1;return b;
}Matrix matrixmul(Matrix a,Matrix b) {LL i,j,k;Matrix c;for(i=0;i<2;i++) {for(j=0;j<2;j++) {c.m[i][j]=0.0;for(k=0;k<2;k++) {c.m[i][j]+=(a.m[i][k]*b.m[k][j]);}}}return c;
}Matrix quickpow(Matrix a,LL p) {Matrix m=a;Matrix b=geti(n);while(p) {if(p%2)b=matrixmul(b,m);p/=2;m=matrixmul(m,m);}return b;
}int main() {LL t;LL p,q;int cas=1;Matrix pp,init,ans;//printf("%llu\n",kmod);scanf("%llu",&t);while(t--) {scanf("%llu %llu %llu",&p,&q,&n);memset(pp.m,0,sizeof pp);pp.m[0][0]=p;pp.m[0][1]=1;pp.m[1][0]=-q;pp.m[1][1]=0;init.m[0][0]=p;init.m[0][1]=2;init.m[1][0]=0;init.m[1][1]=0;printf("Case %d: ",cas++);if(n==0){printf("%llu\n",init.m[0][1]);}else if(n==1){printf("%llu\n",init.m[0][0]);}else {ans=quickpow(pp,n-1);ans=matrixmul(init,ans);printf("%llu\n",ans.m[0][0]);}}return 0;
}
/**/
LightOJ 1070 Algebraic Problem (推导+矩阵快速幂)相关推荐
- A Simple Math Problem(矩阵快速幂)
Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 f(x) = a0 * ...
- 【HDU - 1757】A Simple Math Problem (矩阵快速幂)
题干: Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 f(x) = ...
- 43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)
一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 代码(去掉空行43行) #include<iostream> #inclu ...
- HDOJ 1757 A Simple Math Problem(矩阵快速幂)
2018-5-24 简单的矩阵快速幂问题,重点是如何找到对应关系. f(10) a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 f(9) f(9) 1 0 0 0 0 0 0 0 0 0 ...
- HDU 1757 A Simple Math Problem(矩阵快速幂)
题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + -- ...
- HDU - 1757 A Simple Math Problem (矩阵快速幂)
Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 f(x) = a0 * ...
- LightOJ-1070- Algebraic Problem (矩阵快速幂)
原题链接: Given the value of a+b and ab you will have to find the value of an+bn. a and b not necessaril ...
- foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
Problem 2198 快来快来数一数 Accept: 67 Submit: 194 Time Limit: 1000 mSec Memory Limit : 65536 KB Problem De ...
- DUToj1085 Water Problem(矩阵快速幂)
Problem I: Water Problem Time Limit:3000/1000 MS (Java/Others) Memory Limit:163840/131072 KB (Java ...
最新文章
- go 打印json 转义_Go 项目开发中 10 个最常见的错误
- pycharm windows 服务器_环境配置 | Pycharm远程开发的环境配置
- CentOS7中MariaDB重置密码
- 关闭VMware 不用的服务
- 日志 log4j.xml配置详解
- 深度linux卡顿,Deepin很卡怎么办?Deepin卡顿解决方法盘点
- java语法优化小结
- 机器学习模型_如何口述机器学习模型原理
- Spring velocity 中文乱码 解决方案
- android音频框架
- JAVA人力、项目面试常谈问题以及个人开场介绍模板
- 通过2048学习自定义view(二) 滑动事件监听 与 事件回调
- java中乘法计算的三种方式 位运算中的另一种运算 — 左移运算
- 思维导图c语言java区别_C语言基本数据类型的思维导图
- 云从科技上市在即,或成为小一号的商汤科技?
- 准确的找到BAT实习机会~我入职了腾讯
- 古代汉语王力版复习重点要点
- App流量变现并不一定损害用户体验,这些方法你得了解
- 船舶强度与结构设计大作业二matlab,船舶强度与结构设计题目
- OpenGL---PBO
热门文章
- [go学习笔记.第一章] go可以做什么
- 正版office 2007 简体中文专业版(附正版序列号)高速下载正版office 2007 简体中文专业版...
- echart象形图-三角锥形/山峰形/三角形--柱子渐变色,x轴换行显示,加单位显示
- 关于Lind.DDD.Api客户端的使用与知识分享
- 记一次xfs文件系统损坏,磁盘修复问题
- 编码标准:纪律和人因工程的双剑合璧
- 完整学习笔记之Android基础(详版)
- UVA 1084 deer-proof fence
- java jsp中的日历表_java-jsp日历
- spring integration-概述