链接:

http://www.bnuoj.com/bnuoj/contest_show.php?cid=2225#problem/25714

G. Gibonacci number

Time Limit: 2000ms
Case Time Limit: 2000ms
Memory Limit: 65536KB

64-bit integer IO format:  %lld      Java class name:  Main
Submit  Status
Font Size:  +   -

In mathematical terms, the normal sequence F(n) of Fibonacci numbers is defined by the recurrence relation

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

with seed values

F(0)=1, F(1)=1

In this Gibonacci numbers problem, the sequence G(n) is defined similar

G(n)=G(n-1)+G(n-2)

with the seed value for G(0) is 1 for any case, and the seed value for G(1) is a random integer t, (t>=1). Given the i-th Gibonacci number value G(i), and the number j, your task is to output the value for G(j)

Input

There are multiple test cases. The first line of input is an integer T < 10000 indicating the number of test cases. Each test case contains 3 integers i, G(i) and j. 1 <= i,j <=20, G(i)<1000000

Output

For each test case, output the value for G(j). If there is no suitable value for t, output -1.

Sample Input

4
1 1 2
3 5 4
3 4 6
12 17801 19

Sample Output

2
8
-1
516847

Submit  Status

思路:

设 G[1] = x
因为 G[0] = 1
所以 
G[2] = 1 + x
G[3] = 1 + 2x
G[4] = 2 + 3x
G[5] = 3 + 5x
..............
枚举几次就可以发现 
当 i >= 2 的时候 G[i] = f[i-2] + f[i-1]*x   【f[] 为斐波拉契数组。。。】
很容易就可以算出 G[20] 的最大值不会超过 long long 因为 X 最大才 一百万
所以先求出 G[1] = (G[i] - f[i-2]) / f[i-1];
如果能够整除,而且 G[1] >= 1 则可以按照上述公式输出结果即可
否则 X 非法输出 -1

坑:

RE:不能写 while(scanf("%d", &n) != EOF)
WA:1.注意数组边界
          2.注意算出的 t 【代码中的 x】 可能会 < 1 这是非法的,要直接输出 -1
说多了都是泪。。。
很容易的就推理出了公式,然后在这几个坑上和苦逼的 OJ 等待上错了 3 次,外加前面队友的大数错了 4 次,然后就苦逼了。。。。。
暑假最后一篇题解,马上就回家了,代码有点乱Orz

code:

#include<stdio.h>
#include<string.h>const int maxn = 1000000;
long long f[40];
void inint()
{f[0] = f[1] = 1;for(int i = 2; i <= 30; i++) f[i] = f[i-1]+f[i-2];
}
int main()
{inint();int n;int i,j;long long g;scanf("%d", &n); {while(n--){scanf("%d%lld%d", &i,&g,&j);long long x;if(i > 1){x = (g-f[i-2])/f[i-1];if(x*f[i-1] != (g-f[i-2]) || x < 1){printf("-1\n"); continue;}if(j > 1) printf("%lld\n", f[j-2]+f[j-1]*x);else printf("%lld\n", x);}else if(i == 1){x = g;if(x < 1){printf("-1\n"); continue;}if(j == 1) printf("%lld\n", x);else printf("%lld\n", f[j-2]+f[j-1]*x);   }}}return 0;
} 

Gibonacci number【斐波拉契】相关推荐

  1. [python]练习之递归和循环实现斐波拉契数列

    1 # 程序功能:用递归和循环实现斐波拉契数列 2 # 0 1 1 2 3 5 8 13 21 34 3 4 def digui_fibo(number): 5 if number == 1: 6 r ...

  2. Python程序-打印斐波拉契数列

    这个程序的输出从第0项开始,输出到指定的项为止. 程序如下: # 打印斐波拉契数列 iterations = int(input("Number of iterations: ") ...

  3. 著名数列及其算法(斐波拉契)

    1.斐波那契数列 2.帕多瓦数列 3.卡特兰数 4.Look-and-say 数列 5.递推数列 – – 1.斐波那契数列 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而 ...

  4. 实现斐波拉契的三种方法

    实现斐波拉契的三种方法: 方法一:递归方法 def fib_1(index):if index <= 2:return 1else:return fib_1(index-1) + fib_1(i ...

  5. 冒泡排序,斐波拉契迭代、生成器

    冒泡排序: l=[1,3,0,100,1000,8,2,9,5,11,8]def maopao(l):for i in range(len(l)-1):if l[i+1] < l[i]:a= l ...

  6. 动态规划学习之三种方法解决斐波拉契数

    斐波拉契数是一个很经典的问题,也会很多公司面试的考题,每个学习计算机的同学都会接触这个问题,尤其是在学习递归的时候,利用递归来解决斐波拉契数是很多教材采用的一个例子,所以很多同学一想到斐波拉契马上就会 ...

  7. 函数-生成器之斐波拉契数列

    斐波拉契数列:除第一个和第二个数外,任意一个数都可以由前两个数相加而来. 无法用生成式,但可由函数生成. 函数生成斐波拉契数列数列: def fib(max):n,a,b=0,0,1while n & ...

  8. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

  9. 趣学算法之斐波拉契数列实现

    1.斐波拉契数列 f(1) = 1; f(2) = 1; f(3) = f(1) + f(2);以此内推1 x = 1 f(x) = 1 x = 2f(x - 1) + f(x - 2) x > ...

最新文章

  1. jQuery Mobile发展新闻阅读器,适应iphone和android打电话
  2. 批量离线下载迅雷快传资源
  3. 直播预告:基于动态词表的对话生成研究 | PaperWeekly x 微软亚洲研究院
  4. web flash rtmp_基于RTMP和WebRTC开发大规模低延迟(1000毫秒内)直播系统
  5. sliverlight 开发FAQ
  6. leetCode----day01---- 从排序数组中删除重复项
  7. Openwrt源码LuCI应用完整说明
  8. CGAL点云重建白膜
  9. winform右下角弹窗
  10. 如何在调试Window App时,触发 Suspending ,Resuming 等事件
  11. 汉字一、二级字库的汉字与unicode编码(十六进制)对照表,按照unicode的顺序排列
  12. [play framework] Seperate the admin, and build it as a module in play framework
  13. 计算机设备统计报告,2017年1-12月通信设备、计算机及其他电子设备制造业增加值统计分析...
  14. 通过 JFR 与日志深入探索 JVM - 调试 JVM 的工具 WhiteBox API
  15. Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic
  16. 如何制作淘宝主图视频
  17. Python爬虫:抓取多级页面数据
  18. 解决Webstorm通过Chrome无法调用JB插件调试的问题
  19. windows11 任务栏和开始菜单都不见了怎么办?
  20. ECMAScript6 入门

热门文章

  1. 最新 || 精容数安数据保护解决方案
  2. 小乌龟没有relocate选项,项目迁移怎么办
  3. SAP FICO 基础(1)中日双语
  4. Android端搭建web服务器
  5. Group by ALL
  6. Android_基于g-sensor的坐下动作的的识别
  7. Master或是围棋史上最完美营销:谷歌、围棋和野狐网都赢了
  8. [野狐行][辅助开发系列课程][2016/4/27][一重门公开课全集][官方网站已开放]
  9. 测绘专业c语言程序,C语言测绘程序.doc
  10. 隐形墨水笔上亚马逊要做什么检测?