Heng_Xin 题解分享 · 2025/4/10
类斐波那契循环数(结果填空) - 题解
把题目公式翻译为代码, 然后模拟即可 ```cpp #include <iostream> #include <string> #include <vector> #include <numeric> #include <algorithm> using namespace std; using ll = long long; int main() { int n = 1e7; for (int i = n; i >= 197; --i) { vector<int> mae; int x = i; while (x) { mae.push_back(x % 10); x /= 10; } mae = {mae.rbegin(), mae.rend()}; int n = mae.size(); ll s = 0; for (int k = n; s < i; ++k) { s = 0; for (int c = k - n; c < k; ++c) { s += mae[c]; } mae.push_back(s); } if (s == i) { cout << i << '\n'; return 0; } } return 0; } ```
查看全文
0 0 1 4
acloser 题解分享 · 2025/4/11
类斐波那契循环数(结果填空) - 题解
模拟纯暴力 ```import import java.util.List; public class 类斐波那契循环数 { static int maxx = Integer.MIN_VALUE; static int n = 197; static int [] arr; public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 7913837; i > 0 ; i--) { System.out.println(i); if(check_(i)) { System.out.println(i); break; } } } private static boolean check_(int i) { String string = String.valueOf(i); arr = new int[(int)1e6]; char[] charArray = string.toCharArray(); for (int j = 0; j < charArray.length; j++) { arr[j+1]=charArray[j]-'0'; // System.out.println(arr[j+1]); } for (int k = charArray.length+1; arr[k-1]<i; k++) { arr[k]=summer(k,charArray.length); // System.out.println(arr[k]); if(arr[k]==i) { return true;} } // TODO Auto-generated method stub return false; } private static int summer(int k,int n) { // TODO Auto-generated method stub int sum = 0; for (int i = k-n; i <= k-1; i++) { // System.out.println(arr[i]); sum+=arr[i]; } return sum; } } ```
查看全文
0 0 0 3
cpfswds 题解分享 · 2025/2/21
类斐波那契循环数(结果填空) - 题解
def is_fibonacci_loop_number(N): """判断一个数N是否是类斐波那契循环数""" 处理特殊情况:0的数列全为0,一定符合条件 if N == 0: return True ``` # 将数字拆分为各位数字的列表,例如197 -> [1, 9, 7] digits = list(map(int, str(N))) # 获取数字的位数n,例如197的n=3 n = len(digits) # 初始化数列S,前n项为数字的各位 sequence = digits.copy() # 最多生成100项,避免无限循环(根据问题特性设置的阈值) for _ in range(100): # 计算新项:取当前序列的最后n项求和 next_val = sum(sequence[-n:]) # 发现新项等于目标数N,返回True if next_val == N: return True # 若新项超过N,后续项只会更大,直接终止 if next_val > N: return False # 将新项添加到序列中 sequence.append(next_val) # 循环100次仍未找到匹配项,返回False return False ``` def find_max_fibonacci_loop_number(): """在0到10^7范围内寻找最大的类斐波那契循环数""" max_N = 107 # 问题定义的上界 ``` # 从最大值开始倒序遍历,确保找到第一个符合条件的数即为最大值 for N in range(max_N, -1, -1): # 检查当前数是否符合条件 if is_fibonacci_loop_number(N): return N # 找到后立即返回 # 若未找到(理论上不会执行到这里) return -1 ``` 执行搜索并打印结果 print(find_max_fibonacci_loop_number())
查看全文
0 0 0 3