蓝桥杯 2024年省赛真题
Java 大学B组
在找工作,随便写写,安定下来再把去年国赛题解补上
试题 A: 报数游戏
本题总分: 5 5 5 分
【问题描述】
小蓝和朋友们在玩一个报数游戏。由于今年是 2024 2024 2024 年,他们决定要
从小到大轮流报出是 20 20 20 或 24 24 24 倍数的正整数。前 10 10 10 个被报出的数是 : : : 20 , 24 , 40 , 48 , 60 , 72 , 80 , 96 , 100 , 120 20, 24, 40, 48, 60, 72, 80, 96, 100, 120 20,24,40,48,60,72,80,96,100,120。请问第 202420242024 202420242024 202420242024 个被报出的数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
2429042904288
由容斥原理可知,第 i \rm i i 个报出的数为 k \rm k k 时,它们的关系为 i = k / 20 + k / 24 − k / l c m ( 20 , 24 ) \rm i=k/20+k/24-k/lcm(20,24) i=k/20+k/24−k/lcm(20,24) 即 i = 12 k \rm i=12k i=12k
试题 B: 类斐波那契循环数
本题总分: 5 5 5 分
【问题描述】
对于一个有 n n n 位的十进制数 N = d 1 d 2 d 3 ⋯ d n N = d_1d_2d_3\cdots d_n N=d1d2d3⋯dn,可以生成一个类斐波那契数列 S S S,数列 S S S 的前 n n n 个数为 { S 1 = d 1 , S 2 = d 2 , S 3 = d 3 , ⋯ , S n = d n } \{S_1 = d1_, S_2 = d_2, S_3 = d_3, \cdots, S_n = d_n\} {
S1=d1,S2=d2,S3=d3,⋯,Sn=dn},数列 S S S 的第 k ( k > n ) k(k > n) k(k>n) 个数为 ∑ i = k − n k − 1 S i \sum^{k−1}_{i=k−n} S_i ∑i=k−nk−1Si。如果这个数 N N N 会出现在对应的类斐波那契数列 S S S 中,那么 N N N 就是一个类斐波那契循环数。
例如对于 197 197 197,对应的数列 S S S 为 { 1 , 9 , 7 , 17 , 33 , 57 , 107 , 197 , ⋯ } \{1, 9, 7, 17, 33, 57, 107, 197, \cdots \} {
1,9,7,17,33,57,107,197,⋯}, 197 197 197 出现在 S S S 中,所以 197 197 197 是一个类斐波那契循环数。
请问在 0 0 0 至 1 0 7 10^7 107 中,最大的类斐波那契循环数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
7913837
假定答案为 7 7 7 位数,从后往前 B F \rm BF BF 就行
public class Main {
public static void main(String ...args) {
new Main().run(); }
void run() {
int ans = 9999999, i, k;
int[] buf = new int[100];
for (;; --ans) {
for (i = 7, k = ans, buf[8] = 0; i > 0; --i, k /= 10) {
buf[8] += k % 10