当前位置:   article > 正文

第15届蓝桥杯题解

第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个数

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class Main {
  4. public static void main(String[] args) {
  5. List<Integer> list = new ArrayList<>();
  6. for (int i=10000000;i>=1;i--){
  7. String s =""+ i;
  8. for (int j=0;j<s.length();j++){//初始化数列
  9. list.add(s.charAt(j)-'0');
  10. }
  11. int len = s.length();
  12. boolean ist = false;
  13. while (list.get(list.size()-1)<i){
  14. int sum=0;
  15. for (int j=list.size()-1;j>=list.size()-len;j--){//求前n位数相加
  16. sum+=list.get(j);
  17. }
  18. list.add(sum);
  19. if (sum==i){//如果得到的值等于S输出结果
  20. System.out.println(sum);
  21. ist = true;
  22. break;
  23. }
  24. }
  25. if (ist){
  26. break;
  27. }
  28. }
  29. }
  30. }

C题

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

D题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/476238
推荐阅读
相关标签
  

闽ICP备14008679号