1133. Fibonacci Sequence

Time limit: 1.0 second
Memory limit: 64 MB

is an infinite sequence of integers that satisfies to Fibonacci conditionFi + 2 = Fi + 1 + Fi for any integer i. Write a program, which calculates the value of Fn for the given values of Fi and Fj.

Input

The input contains five integers in the following order: iFijFjn.
−1000 ≤ ijn ≤ 1000, i ≠ j,
−2·109 ≤ Fk ≤ 2·109 (k = min(ijn), …, max(ijn)).

Output

The output consists of a single integer, which is the value of Fn.

Sample

input output
  1. 3 5 -1 4 5
  1. 12
  1. #include <iostream>
  2. using namespace std;
  3. const int oo=;
  4. int now;
  5. __int64 i,fi,j,fj,n;
  6. __int64 l=-oo,r=oo,mid,sum[];
  7. int main()
  8. {
  9. cin >> i >> fi >> j >> fj >> n;
  10. if (i > j)
  11. {
  12. swap(i,j);
  13. swap(fi,fj);
  14. }//进行调整,使得i比j考前
  15. while (l <= r)
  16. {//进行二分
  17. mid=(l+r)>>;//先取中间值,mid表示第i+1个数的值
  18. sum[]=fi;
  19. sum[now=]=mid;
  20. int k=i+,flag=-;
  21. while (k <= j)
  22. {//计算加法运算次数
  23. now=(now+)%;
  24. ++k;
  25. sum[now]=sum[(now+)%]+sum[(now+)%];
  26. if (sum[now] > oo) flag=;//向上超界了用1进行标记
  27. else if (sum[now] < (-oo)) flag=-;//超出了最低限用-1进行标记
  28. if (flag != -) break;//超界了就不需要在进行运算了
  29. }
  30. if (flag == -)
  31. {
  32. if (sum[now] > fj) flag=;//没有超界但是大于fj表示mid开大了
  33. else if (sum[now] < fj) flag=-;//没有超界但是运算到了j小于fj表示mid开小了
  34. else flag=;//mid开正确了
  35. }
  36. if (flag == ) r=mid-;//开大了重置r
  37. else if (flag == -) l=mid+;//开小了总之L
  38. else if (flag == ) break;//正好则跳出
  39. }
  40. sum[]=fi;
  41. sum[now=]=mid;//进行模拟找到第n个数
  42. if (i < n)
  43. {
  44. int k=i+;
  45. while (k <= n)
  46. {
  47. now=(now+)%;
  48. ++k;
  49. sum[now]=sum[(now+)%]+sum[(now+)%];
  50. }
  51. }
  52. else if (i > n)
  53. {
  54. int k=i-;
  55. while (k >= n)
  56. {
  57. now=(now+)%;
  58. --k;
  59. sum[now]=sum[(now+)%]-sum[(now+)%];
  60. }
  61. }
  62. else --now;
  63. cout << sum[now] << endl;
  64. return ;
  65. }

***1133. Fibonacci Sequence(斐波那契数列,二分,数论)的更多相关文章

  1. Computational Complexity of Fibonacci Sequence / 斐波那契数列的时空复杂度

    Fibonacci Sequence 维基百科 \(F(n) = F(n-1)+F(n-2)\),其中 \(F(0)=0, F(1)=1\),即该数列由 0 和 1 开始,之后的数字由相邻的前两项相加 ...

  2. 10、end关键字和Fibonacci series: 斐波纳契数列

    # Fibonacci series: 斐波纳契数列 # 两个元素的总和确定了下一个数 a, b = 0, 1 #复合赋值表达式,a,b同时赋值0和1 while b < 10: print(b ...

  3. [Amazon] Program for Fibonacci numbers 斐波那契数列

    The Fibonacci numbers are the numbers in the following integer sequence. 0, 1, 1, 2, 3, 5, 8, 13, 21 ...

  4. Fibonacci series(斐波纳契数列)的几种常见实现方式

    费波那契数列的定义: 费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数.斐波那契数列.斐波那契数列.黄金切割数列. 在数学上,费波那契数列是以递归的方法来定义 ...

  5. 【算法】Fibonacci(斐波那契数列)相关问题

    一.列出Fibonacci数列的前N个数 using System; using System.Collections.Generic; using System.Linq; using System ...

  6. 509. Fibonacci Number斐波那契数列

    网址:https://leetcode.com/problems/fibonacci-number/ 原始的斐波那契数列 运用自底向上的动态规划最佳! 可以定义vector数组,但是占用较多内存空间 ...

  7. POJ 3070 Fibonacci【斐波那契数列/矩阵快速幂】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17171   Accepted: 11999 Descr ...

  8. Fibonacci(斐波那契数列)的第N位数

    无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为F(n)=1 ...........(n=1或n=2)F(n)=F(n-1)+F(n-2).. ...

  9. 【LeetCode每天一题】Fibonacci Number(斐波那契数列)

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

随机推荐

  1. jQuery Validate【强大的表单验证】

    一.引入菜鸟教程提供的 1.14.0 版本下载地址:http://static.runoob.com/download/jquery-validation-1.14.0.zip <script ...

  2. AutoCAD 2009及以上 32位&64位 官方原版下载地址

    AutoCAD 2017 AutoCAD 2017 简体中文版 32位 http://trial2.autodesk.com/NET17SWDLD/2017/ACD/DLM/AutoCAD_2017_ ...

  3. [河南省ACM省赛-第四届] 表达式求值(nyoj 305)

    栈的模拟应用: #include<iostream> #include<cstdio> #include<cstring> #include<string&g ...

  4. Gentoo网络管理方法总结

    OpenRC/netifrc Netifrc is a collection of modules created to configure and manage network interfaces ...

  5. Java面试题及答案(基础122道,编码19道)

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...

  6. sql server 查询表基本信息sql

    SELECT c.name,t.name TYPE,c.max_length,c.precision,c.scale,p.value FROM sys.systypes t INNER JOIN sy ...

  7. 二十九、oracle 触发器

    一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需 ...

  8. lr_save_var() 截取任意字符串长度,以参数形式输出(参数转变量)

    Action() { char * desc=(char *)malloc(10);  //定义指针变量,以变量形式存放截取到的参数值 // char * aa = "jadkshfkasd ...

  9. cuckoo数据库变更

    1.cuckoo版本升级 cuckoo默认的数据库为sqlite,默认连接方式为sqlite:///os.path.join(REPORT_ROOT, "db", "cu ...

  10. HTML表格标记