2019年蓝桥杯java数列求值

给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。

import java.util.Collections;
import java.util.List;

public class 数列求值 {
	public static void main(String[] args) {
		int f1 = 1,f2 = 1,f3 = 1;
		int f = 0;
		for(int i=3;i<20190324;i++) {
			f = (f1 + f2 + f3)%10000;
			f1 = f2;
			f2 = f3;
			f3 = f;
		}
		System.out.println(f);
	}

	
}

下面是我写的另一种方法,但是运行报错,希望有大佬帮忙指正一下

public class 数列求值 {
	public static void main(String[] args) {
	int n = 20190324;
	long res = F(n);
	int ans = F(n)%10000;
	System.out.println(ans);
}

	private static int F(int n) {
		if(n==1 || n==2 || n==3) {
			return 1;
		}
		return F(n-1)+F(n-2)+F(n-3);
	}
}

### 关于2024蓝桥杯Java省赛B组的题目及解析 目前可获得的信息显示,2024的第十四届蓝桥杯Java B组省赛已经结束,并有部分真题及其解析被公开分享[^2]。然而,具体的完整题目集尚未全面披露,以下是基于已有信息整理的部分内容。 #### 已知题目概述 根据已有的资料,2024第十四届蓝桥杯Java B组省赛涉及多个算法和数据结构的经典问题,其中包括但不限于以下几类: 1. **大数处理** 一道典型的编程题涉及到大数运算,尤其是阶乘计算中的溢出问题。此题考察选手对于`BigInteger`类的应用能力以及如何优化程序性能以满足时间复杂度的要求。 2. **动态规划与递归** 类似于斐波那契数列的问题再次出现,要求通过递归或迭代方式解决特定序列求值问题。需要注意的是,在实现过程中要防止数值越界并合理取模操作[^3]。 3. **组合数学与约束条件下的枚举** 如下述示例所示的一道经典分解问题: #### 示例代码:分解整数问题 ```java import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { int target = 2019; Set<String> results = new HashSet<>(); for (int i = 1; i < target; i++) { if (!isValid(i)) continue; for (int j = i + 1; j < target - i; j++) { if (!isValid(j)) continue; int k = target - i - j; if (k > j && isValid(k)) { String key = formatKey(i, j, k); results.add(key); } } } System.out.println(results.size()); } private static boolean isValid(int num) { while (num > 0) { int digit = num % 10; if (digit == 2 || digit == 4) return false; num /= 10; } return true; } private static String formatKey(int a, int b, int c) { return String.format("%d+%d+%d", a, b, c); } } ``` 上述代码解决了将2019分解为三个互不相同且不含数字2和4的正整数之和的问题。该问题的核心在于利用三重循环进行穷举,并结合哈希集合去重来确保唯一性。 --- ### 解析总结 上述提到的大数处理、动态规划/递归以及组合数学等问题均属于历蓝桥杯竞赛的重点考查方向。参赛者需熟练掌握基础算法设计技巧,同时注重边界情况分析与效率优化。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值