vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)相关的知识,希望对你有一定的参考价值。

P1543极值问题

背景

小铭的数学之旅2。

描写叙述

已知m、n为整数,且满足下列两个条件:
① m、n∈1,2。…,K
② (n^ 2-mn-m^2)^2=1
编一程序。对给定K,求一组满足上述两个条件的m、n,而且使m^2+n^2的值最大。比如,若K=1995。则m=987,n=1597,则m、n满足条件,且可使m^2+n^2的值最大。

格式

输入格式

输入仅一行,K的值。

输出格式

输出仅一行,m^2+n^2的值。

例子1

例子输入1[复制]

1995

例子输出1[复制]

3524578

限制

每一个測试点1秒。

提示

Source:
汕头市FXOI组
Phoeagon
ThanX2 Sivon
For TripleY

对于这道题目首先我们得找到项与列的关系

于是能够得到a[i]  = 3 * a[i - 1] - a[i - 2]{当中i表示的是斐波那契数列的项数}

如此就能够解决这个问题了

技术分享

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

k = int(raw_input())
a = 1
b = 1
ans = 2
cnt = 2
if k == 1:
    print 2
elif k == 2:
    print 5
else:
    while True:
        if ans > k:break
        t = a
        a = a + b
        b = t
        ans += a
        cnt += 1
    c = 1
    d = 1
    for i in range(cnt):
        t = c
        c = c * 3 - d
        d = t
    print c

        












以上是关于vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)的主要内容,如果未能解决你的问题,请参考以下文章

斐波那契数列的公式是啥?

斐波那契数列怎么算???

08《算法入门教程》递归算法之斐波那契数列

斐波那契数列

类似斐波那契数列的递归

介绍下斐波那契数列。