第十五届蓝桥杯javaB组填空题

      距离蓝桥杯比赛已经过去几天了,不知道大家感觉怎么样。本人是第一次参赛,想和大家交流一下自己在解题过程中的思路。本人接触算法的时间并不长,因此有很多算法并不了解,只能和大家分享填空题的思路。如果有更好的、更高级的思路欢迎大家分享。

      根据往届真题来看,貌似两道填空题中总有一道题可以通过找规律求解。因此在做填空的时候,可以先找一找规律,找不到规律再去想怎么用代码求解问题。为了防止被蒙答案,填空的数据往往很大,因此最好提前了解int型与long型的数据范围。插个题外话,虽然没什么用,但数据貌似也是有迹可循,当年的题目喜欢用当年的年份作为数据。比如2024年用202420242024,去年也用了202320232023。

1741ff87a6824f81a9e572006ef6b698.jpg

 思路:将给出的10个数列出来后,可以发现第5n个数据都是有规律的。

①第5个数为60,第10个数为120,因为题目要求并不复杂,可以自行罗列出第11-20的数据。

20   ,24   ,40    ,48   ,60   ,72   ,80   ,96   ,100, 120

140, 144, 160, 168, 180, 192, 200, 216, 220, 240

②可以推断第5n个数为60n,因此第2024202402020个数为202420242020/5*60=2429042904240

③根据①可以发现,每10个数之间也有规律,每个数相对于前一个数的增量依次为

+20   +4   +16   +8   +12   +12   +8   +16   +4   +20

因此第202420242024个数为2429042904240 +20 +4 +16 +8 = 2429042904288

 

c167968b7a064260bfba37bfda2abddd.jpg

 思路:首先分析题目中给出的示例197,对应数列{1,9,7,17,33,57,107,197,…}。前面几个数依次对应每个位数上的数,比如2588(不一定是类斐波那契循环数,只是拿来找规律的),四位数,对应数列前4位应为{2,5,8,8}。

      后面的数,题目中给出的定义为,第k个数是数列中第k - n到第k - 1个数的求和。比如197,对应数列中第4个数是第4-3到第4-1个数的求和,即第1-3个数的求和。第5个数是第5-3到第5-1个数的求和,即第2-4个数的求和。如果不是197,是2588呢。那2588的第5个数为第5-4到第5-1个数的求和,即1-4个数的求和。

      会发现,n位数对应的数列的第k个数是其前面n个数的和。比如197对应数列的第6个数是其前 3个数的和,即第3-5个数的和。

①写一个大循环,循环1-10的7次方,找出最大的类斐波那契循环数,设每次循环的数为i。

②定义一个数组array[9],用于存储i的对应数列。为啥是array[9],因为只需在1-10的7次方内找,最大的数10的7次方为8位数。那为啥定义array[9],而不是array[8]。因为我们要留一个位置计算对应数列S中新的数。你会发现,比如197,前几个数为对应每个位数上的数,后面的数为其前面n个数的和。求第4个数的时候,需要前3个数,求第5个数的时候,需要第2-4个数,此时第1个数已经不再需要了。因此在求完第4个数的时候,可以滚动数组,用第n个元素覆盖第n-1个元素。那么对于197,只需要用到array[4]便可一直往后寻找。

③当对应数列中的数等于i时,输出这个数i,并退出这一次的循环,使i+1;当对应数列中的数小于i,则继续滚动数组;当对应数列中的数大于i,则退出这一次的循环,使i+1。

④需要注意的是,滚动数组时,只需重置用于计算对应数列S中新的数的元素。比如对于197而言,只需重置array[4]。而经历一次大循环后,i的值变动,需要将array数组中的所有元素进行重置。

循环结束,最后一个输出的数为7913837

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岸芷汀兰Zzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值