[LightOJ1070]Algebraic Problem
题目:Algebraic Problem
链接:https://vjudge.net/problem/LightOJ-1070
分析:
1)$ a^n+b^n = ( a^{n-1}+b^{n-1} )*(a+b) - (a*b^{n-1}+a^{n-1}*b) $
构造矩阵: $ \left[ \begin{array}{cc} 0 & -1 \\ a*b & a+b \end{array} \right] $
$$ \left[ \begin{array}{cc} a*b^{n-1}+a^{n-1}*b & a^{n-1}+b^{n-1} \end{array} \right] * \left[ \begin{array}{cc} 0 & -1 \\ a*b & a+b \end{array} \right] = \left[ \begin{array}{cc} a*b^n+a^n*b & a^n+b^n \end{array} \right] $$
2)注意特判0的情况,至于对$2^{64}$取模,开unsigned long long,自然溢出即可。
#include <iostream>
#include <cstring>
using namespace std;
typedef unsigned long long LLU;
typedef unsigned int uint;
struct Matrix{
LLU a[][];
Matrix(int f=){
memset(a,,sizeof a);
if(f==)for(int i=;i<;++i)a[i][i]=;
}
};
Matrix operator*(Matrix& A,Matrix& B){
Matrix C;
for(int k=;k<;++k)
for(int i=;i<;++i)
for(int j=;j<;++j)
C.a[i][j]+=A.a[i][k]*B.a[k][j];
return C;
}
Matrix operator^(Matrix A,uint n){
Matrix Rt();
for(;n;n>>=){
if(n&)Rt=Rt*A;
A=A*A;
}
return Rt;
}
int main(){
int T;scanf("%d",&T);
Matrix A,ANS;LLU p,q;uint n;
for(int i=;i<=T;++i){
scanf("%llu%llu%u",&p,&q,&n);
if(n==){
printf("Case %d: 2\n",i);
continue;
}
A.a[][]=;A.a[][]=-;
A.a[][]=q;A.a[][]=p;
ANS=A^(n-);
LLU ans=*q*ANS.a[][]+ANS.a[][]*p;
printf("Case %d: %llu\n",i,ans);
}
return ;
}
3)$ a^n + b^n = (a^{n-1}+b^{n-1})*(a+b) - (a*b^{n-1}+a^{n-1}*b) = (a^{n-1}+b^{n-1})*(a+b)-a*b*(b^{n-2}+a^{n-2}) $
构造矩阵:$ \left[ \begin{array}{cc} a+b & -ab \\ 1 & 0 \end{array} \right] $
$$ \left[ \begin{array}{cc} a+b & -ab \\ 1 & 0 \end{array} \right] * \left[ \begin{array}{c} a^{n-1}+b^{n-1} \\ a^{n-2}+b^{n-2} \end{array} \right] = \left[ \begin{array}{c} a^n+b^n \\ a^{n-1}+b^{n-1} \end{array} \right] $$
[LightOJ1070]Algebraic Problem的更多相关文章
- LightOJ 1070 - Algebraic Problem 矩阵高速幂
题链:http://lightoj.com/volume_showproblem.php?problem=1070 1070 - Algebraic Problem PDF (English) Sta ...
- LightOJ 1070 Algebraic Problem (推导+矩阵高速幂)
题目链接:problem=1070">LightOJ 1070 Algebraic Problem 题意:已知a+b和ab的值求a^n+b^n.结果模2^64. 思路: 1.找递推式 ...
- LightOJ 1070 - Algebraic Problem 推导+矩阵快速幂
http://www.lightoj.com/volume_showproblem.php?problem=1070 思路:\({(a+b)}^n =(a+b){(a+b)}^{n-1} \) \(( ...
- LightOJ 1070 Algebraic Problem:矩阵快速幂 + 数学推导
题目链接:http://lightoj.com/volume_showproblem.php?problem=1070 题意: 给你a+b和ab的值,给定一个n,让你求a^n + b^n的值(MOD ...
- 1065 - Number Sequence &&1070 - Algebraic Problem
1065 - Number Sequence PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...
- LOJ1070(SummerTrainingDay05-B 矩阵快速幂)
Algebraic Problem Given the value of a+b and ab you will have to find the value of an+bn. a and bnot ...
- Algebraic Kernel ( Arithmetic and Algebra) CGAL 4.13 -User Manual
1 Introduction Real solving of polynomials is a fundamental problem with a wide application range. T ...
- CSUOJ 1525 Algebraic Teamwork
Problem A Algebraic Teamwork The great pioneers of group theory and linear algebra want to cooperate ...
- 1199 Problem B: 大小关系
求有限集传递闭包的 Floyd Warshall 算法(矩阵实现) 其实就三重循环.zzuoj 1199 题 链接 http://acm.zzu.edu.cn:8000/problem.php?id= ...
随机推荐
- 百度地图api设置点的自定义图标不显示
百度地图api设置点的设置代码为: var myIcon = new BMap.Icon(): 所以首先要找到这行代码,并在括号中加上图片信息: var myIcon = new BMap.Icon( ...
- java web项目启动加载顺序
转载:https://www.cnblogs.com/writeLessDoMore/p/6935524.html web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:T ...
- HeightCharts柱状图和饼状图
HTML: <div id="container1" style="height:350px; " ></div> <di ...
- Collections -集合排序compareTo方法重写,shuffle,addall
package cn.learn.collection.Collections; /* 排序的对象的类,实现comparable借口,重写compareto方法 若要打印必须重写toString方法, ...
- 《JAVA设计模式》之适配器模式(Adapter)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- [Linux] 017 网络命令与挂载命令
1. 网络命令:write 命令名称:write 命令所在路径:/usr/bin/write 执行权限:所有用户 语法:write [用户名] 功能描述:给用户发信息,以 Ctrl-d 保存结束 范例 ...
- P3914染色计数
题目描述 有一颗\(N\)个节点的树,节点用\(1,2,\cdots,N\)编号.你要给它染色,使得相邻节点的颜色不同.有\(M\)种颜色,用\(1,2,\cdots,M\)编号.每个节点可以染\(M ...
- 数据仓库ETL案例学习(二)
来自案例学习 数据仓库经过ETL成功创建之后,就可以对数据仓库进行多维分析任务. 任务主要分为: 1.设置数据源,并添加分析时所需表到数据视图. 2.创建并设置维度. 3.设置时间维. 4.设置度量属 ...
- PHP中redis加锁和解锁的简单实现
背景说明 在程序开发过程中,通常会遇到需要独占式的访问一些资源的情形,比如商品秒杀时扣减库存.这时就需要对资源加锁.实现锁的方式有很多,比如数据库锁.文件锁等等.本文简单介绍PHP中使用redis来实 ...
- Tutorial2
一.写一个tf2的broadcaster 本教程关于怎样broadcast一个机器人的坐标系到tf2上. 1.创建一个learning_tf2包 catkin_create_pkg learning_ ...