首先
这是一个数列,也就是一系列的数,这个是句废话,但是必须得说
其次,除了f1
和f2以外,每个数字都由前两个数字决定,这个是公式确定的
也就是说,如果对于数列f1
f2
..
fa
fb
.....
fc
fd
存在fa=fc且fd=fb
那么后续的一定循环
第三,对于任意的fn,由于是mod
7所以其取值只能是0
1
2
3
4
5
6这7种可能
这样对于任意的连续两个数字,fa
fb,可能的组合就是7*7=49种,而实际上,0,0序列是一个特殊的情况,除非A
B都是7的倍数,那么所有序列都是0,不然是不会出现00的可能的。
所以,如果提取一个长为50的任意子序列,可以提取出49个连续对,这49个中肯定会有至少一个重复,也就是循环周期了
这个循环周期<=49
所以程序只需要判断49个数据就足够了
事实上,这个题一般被称为水题,因为它和编程,算法什么的关系都不大,实际本质是一道数学题
后面还有很多类似的靠数学解决,和编程关系不大的
如果是为了ACM比赛,那么必须做
如果只是因为编程兴趣的话,这类题可以忽略