第15届蓝桥杯题解

A题

结果:2429042904288

思路很简单

前20个数分别是

20 24 40 48 60 72 80 96 100 120 140 144 160 168 180 192 200 216 220 240

第2 4 6 8 12 ...n个数分别是24的 1倍 2倍 3倍 4倍 6倍 n/2倍

所以第202420242024 个数就是 24的 101210121012倍

B题

答案:7913837

以前经典的斐波那契函数是

初始数据 是 1 1

然后新的数等于前两个数相加

于是数列为 1 1 2 3 5 8......

本题的意思是 先给你一个数让你初始化数列数据

比如 197

初始化数据是 1 9 7

然后新的数等于前n个数相加(n为S的位数比如197n就为3)

于是数列为 1 9 7 17(1+9+7) 33(9+7+17) 57(7+17+33) 107(17+33+57)197(33+57+107)...

所以我们算法思路也是先根据数入的数S给数列初始化然后再和加上前n个数

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i=10000000;i>=1;i--){
            String s =""+ i;
            for (int j=0;j<s.length();j++){//初始化数列
                list.add(s.charAt(j)-'0');
            }
            int len = s.length();
            boolean ist = false;
            while (list.get(list.size()-1)<i){
                int sum=0;
                for (int j=list.size()-1;j>=list.size()-len;j--){//求前n位数相加
                    sum+=list.get(j);

                }
                list.add(sum);
                if (sum==i){//如果得到的值等于S输出结果
                    System.out.println(sum);
                    ist = true;
                    break;
                }
            }
            if (ist){
                break;
            }
        }
    }
}

C题

C题并不知道如何结束输出先欠着吧 有人说用hasnext()来判断结束

D题

相关推荐
汉克老师6 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(4 、移动石子)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
boonya9 小时前
Redisson原理与面试问题解析
面试·职场和发展·redission·分布式中间件框架
旭意9 小时前
C++微基础蓝桥杯之旅9.9-9.12
c++·算法·蓝桥杯
东方芷兰16 小时前
Leetcode 刷题记录 21 —— 技巧
java·算法·leetcode·职场和发展·github·idea
青鱼入云1 天前
【面试场景题】电商订单系统分库分表方案设计
大数据·面试·职场和发展
程序员三藏1 天前
2025最新的软件测试面试八股文(800+道题)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
HAH-HAH1 天前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
天真小巫1 天前
2025.9.11总结
职场和发展
pzx_0011 天前
【LeetCode】392.判断子序列
算法·leetcode·职场和发展
汉克老师1 天前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(2 、寻宝石)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯·蓝桥杯选拔赛