1070 普通递归关系

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 大师 Master

题目描述 Description

考虑以下定义在非负整数n上的递归关系

f(n) = f0 (if n = 0)

= f1 (if n = 1)

= a*f(n-1)+b*f(n-2) otherwise

其中a,b是满足以下两个条件的常数:

(1) a2+4b>0

(2) |a-sqrt(a2+4b)| <= 2 // sqrt是根号的意思

给定f0,f1, a, b和n,请你写一个程序计算fn,可以假定fn是绝对值不超过109的整数(四舍五入)。

输入描述 Input Description

输入文件一行依次给出5个数,f0, f1, a, b和n, f0,f1是绝对值不超过109,n是非负整数,不超过109。另外,a、b是满足上述条件的实数,且|a|,|b|<=106。

输出描述 Output Description

输出f(n)

样例输入 Sample Input

【样例输入1】

0 1 1 1 20

【样例输入2】

0 1 -1 0 1000000000

【样例输入3】

-1 1 4 -3 18

样例输出 Sample Output

【样例输出1】

6765

【样例输出2】

-1

【样例输出3】

387420487

数据范围及提示 Data Size & Hint

见输入描述

分类标签 Tags

矩阵乘法 数论

/*
矩阵乘法.
斐波那契变式.
这样刷水题真的好吗...
注意是double
而且有一个很坑的数据...
*/
#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
LL n;
double a1,b1,f0,f1,a[3][3],b[3][3],c[3][3],ans[3][3];
void mi()
{
while(n)
{
if(n&1)
{
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
for(int k=1;k<=2;k++)
c[i][j]=c[i][j]+ans[i][k]*b[k][j];
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
ans[i][j]=c[i][j],c[i][j]=0.0;
}
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
for(int k=1;k<=2;k++)
c[i][j]=c[i][j]+b[i][k]*b[k][j];
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
b[i][j]=c[i][j],c[i][j]=0.0;
n>>=1;
}
}
void slove()
{
ans[1][1]=f1,ans[1][2]=f0;
b[1][1]=a1,b[2][1]=b1,b[1][2]=1;
mi();
int x=(int)ans[1][2];
cout<<x;
}
int main()
{
cin>>f0>>f1>>a1>>b1>>n;
if(f0==0.0&&f1==0.0) printf("0");
else slove();
return 0;
}

Codevs 1070 普通递归关系(矩阵乘法)的更多相关文章

  1. codevs 3332 数列 (矩阵乘法)

    /* 裸地矩阵乘法 矩阵很好想的 1 1 0 0 0 1 1 0 0 */ #include<iostream> #include<cstring> #include<c ...

  2. codevs 1070 普通递归关系

    1070 普通递归关系  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master     题目描述 Description 考虑以下定义在非负整数n上的递归关系 f( ...

  3. Codevs 1482 路线统计(矩阵乘法)

    1482 路线统计 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description N个节点的有向图, 求从start到finish刚好经过时 ...

  4. 矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

  5. Codevs No.3147 矩阵乘法2

    2016-06-01 17:33:30 题目链接: 矩阵乘法2 (Codevs No.3147) 题目大意: 给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和. 解 ...

  6. Codevs No.1287 矩阵乘法

    2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...

  7. [codevs 1482]路线统计(矩阵乘法)

    题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...

  8. 矩阵乘法 codevs 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...

  9. Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 小明最近在为线性代数而头疼, ...

随机推荐

  1. Gym 102055B Balance of the Force

    大意: $n$个骑士, 第$i$个骑士若加入光明阵营, 那么能力值$L_i$, 加入黑暗阵营, 能力值$D_i$. 给定$m$个限制$(u_i,v_i)$, 表示$u_i,v_i$不能在同一阵营. 求 ...

  2. [POJ3682]King Arthur's Birthday Celebration[期望DP]

    也许更好的阅读体验 \(\mathcal{Description}\) 每天抛一个硬币,硬币正面朝上的几率是p,直到抛出k次正面为止结束,第\(i\)天抛硬币的花费为\(2i-1\),求出抛硬币的天数 ...

  3. Spring Boot,Spring Security实现OAuth2 + JWT认证

    阅读此文,希望是对JWT以及OAuth2有一定了解的童鞋. JWT认证,提供了对称加密以及非对称的实现. 内容源码点我 涉及到源码中两个服务 spring-boot-oauth-jwt-server ...

  4. java之hibernate之双向的多对一关联映射

    这篇讲解 双向的多对一关联映射 1.表结构和多对一时,一致 2.类结构 Book.java public class Book implements Serializable{ private int ...

  5. Vue的11个生命周期函数的用法

    实例的生命周期函数(官方11个):beforeCreate:在实例部分(事件/生命周期)初始化完成之后调用.created:在完成外部的注入/双向的绑定等的初始化之后调用.beforeMount:在页 ...

  6. SSM框架之MyBatis入门介绍

    一.什么是MyBatis? MyBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis.它是一个优秀的持久层框架. 二.为什么使用MyBatis? 为了和 ...

  7. mac环境下Android 反编译

    连接地址: https://www.jianshu.com/p/3a305f32c4a3

  8. 我与SAP成都研究院吴院长的二三事

    这几天Jerry没怎么看手机,今天才注意到,昨天SAP中国研究院公众号上发布了一篇文章:SAP高管说: 体验经济时代下的SAP客户体验.仔细一看,这不是咱SAP成都研究院的吴院长么. 在今年没有发生部 ...

  9. sqlserver 汉字转拼音(转载)

    转载来源一:https://www.cnblogs.com/zhuisuo/archive/2012/01/11/2318908.html 汉字转全拼音函数优化方案(SQLServer),值得你看看 ...

  10. SqlServer中-char varchar nvarchar的区别

    说说nvarchar和varchar的区别:的区别: varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化 ...