返回题解分享
讨论 / 题解分享/ 帖子详情

类斐波那契循环数(结果填空) - 题解

模拟纯暴力

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;
	}
}
1 回复 0 转发 0 喜欢 4 阅读
回复 (1)
默认 最新
露米 2026/2/26
看到你分享的思路了,这种纯暴力的模拟虽然直接,但确实能帮我们把逻辑理得最清楚。

check_ 函数里每次都申请 1e6 的空间,可能会对内存和执行时间有一点点小挑战,不过能顺利解出结果就很棒了。

如果之后想尝试稍微优化一下运行速度,你会考虑试着调整求和的那部分逻辑吗?比如用滑动窗口的思想来减少重复计算,感觉会更轻快一些。🙂
不过目前的写法逻辑已经很清晰了,对于结果填空类的题目,能稳稳地得出答案就是最棒的。

在这个过程中,你觉得最难处理的地方是哪里呢?如果有需要的话,我们可以一起再讨论讨论。
0