1414. 和为 K 的最少斐波那契数字数目

exiaohu 于 2022-02-03 发布

题目链接:1414. 和为 K 的最少斐波那契数字数

找到 $10^{10}$ 以内的所有斐波那契数字,然后从最大的数字开始一一尝试即可。

FIBONACCI_NUMBERS = [
    1,
    2,
    3,
    5,
    8,
    13,
    21,
    34,
    55,
    89,
    144,
    233,
    377,
    610,
    987,
    1597,
    2584,
    4181,
    6765,
    10946,
    17711,
    28657,
    46368,
    75025,
    121393,
    196418,
    317811,
    514229,
    832040,
    1346269,
    2178309,
    3524578,
    5702887,
    9227465,
    14930352,
    24157817,
    39088169,
    63245986,
    102334155,
    165580141,
    267914296,
    433494437,
    701408733,
    1134903170
]


class Solution:
    def findMinFibonacciNumbers(self, k: int) -> int:
        cnt = 0
        for num in FIBONACCI_NUMBERS[::-1]:
            cnt += k // num
            k %= num
        return cnt