# -*-coding:utf-8 -*- import sys import numpy as np from collections import OrderedDict import collections def print_lists(lists):     """     打印二维列表     :param lists: List[List[int]]     :return: None     """     for list in lists:         for i, x in enumerate(list):             print(x, end=' ')         print(end='\n') # def fib(n, a, x): #     list = list() #     list.append(n) #     list.append(a) #     b = n + a #     list.append(b) #     while b <= max: #         b = n + a #         list.append(b) #         n, a = a, b # #     return list def fib(n , a, max):     list = []     b = 0     list.append(n)     list.append(a)     while b <= max:         b = n + a         n, a = a, b         list.append(b)         # a, b = b, a + b         # list.append(b)     # if max in list:     #     weizhi = list.index(max)     return list def solution(x):     ret = []     array = []     if x < 3:         return     if x == 3:         list1 = fib(1, 1, x)         list2 = fib(1, 2, x)         list3 = fib(2, 1, x)         array.append(list1)         array.append(list2)         array.append(list3)     else:         list1 = fib(1, 1, x)         list2 = fib(1, 2, x)         list3 = fib(2, 1, x)         array.append(list1)         array.append(list2)         array.append(list3)         for i in range(4, x+1, 1):             if i%2 == 0:                 list1 = []                 a = int(i/2)                 list1 = fib(a, a, x)                 array.append(list1)             else:                 n = int(i/2)                 a = int(i/2)+1                 list1 = fib(n, a, x)                 array.append(list1)                 list1 = fib(a, n, x)                 array.append(list1)     hash = OrderedDict()     print_lists(array)     for list in array:         if x in list:             weizhi = list.index(x) + 1             hash[weizhi] = hash.get(weizhi, 0) + 1     hash = OrderedDict(sorted(hash.items(), key=lambda x: x[0], reverse=False))     return hash if __name__ == "__main__":     # 读取第一行的n     ret = []     for i in range(1):         x = int(sys.stdin.readline().strip())     # print(x)     ret_hash = solution(x)     for i, j in ret_hash.items():         ret.append([i, j])     print_lists(ret) 你看看我这个答案可以没,我自己测试是没问题,不过提示数组越界了。
点赞 2
牛客网
牛客企业服务