蓝桥杯基础-001-Fibonacci_Array

本文介绍了一个简单的Java程序,用于计算斐波那契数列中第n项对10007取余的结果。使用了迭代的方法来避免大数运算,并通过Scanner类读取用户输入。

题意

斐波那契数列(Fibonacci-Array) 第 n 项对10007的求余数

代码

import java.util.Scanner;

public class Main {

public static void main(String[] args) {


long sub = 0,f1 = 1,f2 = 1,f3 = 2,n = 0,result = 0;
Scanner  in = new Scanner(System.in);
n = in.nextInt();
if(n > 2){
for(sub=3;sub <= n;sub++){
f3 = (f1 + f2)%10007;
f1 = f2;
f2 = f3;
}
result = f3;
}
else

result = f1;


System.out.println(result);
}

}

Summary

1. 类名用Main ->提交格式

2. 输入用Scanner ->java语法

Environment

Myeclipse-Pro-2014-JDK1.7

第一次提交&&第一次写Blog

Attention

Lin : 哈哈,这比看神盾局第五季有劲多了,继续加油~


### 蓝桥杯常用算法代码汇总 以下是针对蓝桥杯竞赛的一些常见算法模板及其代码实现: #### 1. 快速幂计算 快速幂是一种高效的指数运算方法,适用于大数取模场景。 ```python def fast_power(base, exponent, mod): result = 1 while exponent > 0: if exponent % 2 == 1: result = (result * base) % mod base = (base * base) % mod exponent //= 2 return result ``` 此代码实现了基于二分法的快速幂运算[^1]。 --- #### 2. 欧几里得最大公约数算法 欧几里得算法用于高效求解两个整数的最大公约数。 ```python def gcd(a, b): while b != 0: a, b = b, a % b return a ``` 该算法通过不断迭代余数来减少问题规模,最终得到两数的最大公约数[^3]。 --- #### 3. 素数判断与埃拉托色尼筛法 素数判断是一个常见的考点,而埃拉托色尼筛法则可用于批量筛选素数。 单个素数判断: ```python import math def is_prime(n): if n <= 1: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True ``` 埃拉托色尼筛法: ```python def sieve_of_eratosthenes(limit): primes = [True] * (limit + 1) primes[0], primes[1] = False, False for i in range(2, int(math.sqrt(limit)) + 1): if primes[i]: for j in range(i*i, limit + 1, i): primes[j] = False return [i for i, prime in enumerate(primes) if prime] ``` 上述两种方法分别适合于单独判断和批量生成素数列表[^4]。 --- #### 4. 计算两点间的距离(复数优化) 对于坐标系中的几何问题,可以通过复数简化计算过程。 ```python import cmath def distance_between_points(x1, y1, x2, y2): point1 = complex(x1, y1) point2 = complex(x2, y2) return abs(point1 - point2) # 示例调用 print(distance_between_points(0, 0, 3, 4)) ``` 这种方法利用了复数的模长特性,能够显著提升效率并降低复杂度[^2]。 --- #### 5. 动态规划经典模板——斐波那契序列 动态规划是解决最优化问题的重要工具之一。 ```python def fibonacci_dp(n): if n <= 0: return [] fib_sequence = [0, 1] for i in range(2, n): fib_sequence.append(fib_sequence[-1] + fib_sequence[-2]) return fib_sequence[:n] # 示例调用 print(fibonacci_dp(10)) ``` 以上代码展示了如何使用动态规划的思想构建斐波那契数列。 --- #### 6. 字符串匹配 KMP 算法 KMP 是一种经典的字符串匹配算法,具有线性时间复杂度。 ```python def kmp_search(text, pattern): lps = compute_lps_array(pattern) i = 0 # index for text[] j = 0 # index for pattern[] matches = [] while i < len(text): if pattern[j] == text[i]: i += 1 j += 1 if j == len(pattern): matches.append(i-j) j = lps[j-1] elif i < len(text) and pattern[j] != text[i]: if j != 0: j = lps[j-1] else: i += 1 return matches def compute_lps_array(pattern): length = 0 lps = [0] * len(pattern) i = 1 while i < len(pattern): if pattern[i] == pattern[length]: length += 1 lps[i] = length i += 1 else: if length != 0: length = lps[length-1] else: lps[i] = 0 i += 1 return lps ``` 这段代码实现了完整的 KMP 算法逻辑,适配多种字符串查找需求。 --- #### 7. 高精度加法/减法 高精度运算是处理大数据范围的基础技能。 ```python def high_precision_addition(num1, num2): carry = 0 res = "" i, j = len(num1)-1, len(num2)-1 while i >= 0 or j >= 0 or carry: digit_sum = carry if i >= 0: digit_sum += ord(num1[i]) - ord('0') i -= 1 if j >= 0: digit_sum += ord(num2[j]) - ord('0') j -= 1 carry = digit_sum // 10 res += str(digit_sum % 10) return res[::-1] def high_precision_subtraction(num1, num2): borrow = 0 res = "" i, j = len(num1)-1, len(num2)-1 while i >= 0 or j >= 0: digit_diff = -borrow if i >= 0: digit_diff += ord(num1[i]) - ord('0') i -= 1 if j >= 0: digit_diff -= ord(num2[j]) - ord('0') j -= 1 if digit_diff < 0: digit_diff += 10 borrow = 1 else: borrow = 0 res += str(digit_diff) return res[::-1].lstrip("0") or "0" ``` 这两段代码分别解决了高精度加法和减法的核心逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值