您的位置首页生活百科

杭电 ACM 1005求大神帮忙解答

杭电 ACM 1005求大神帮忙解答

首先

这是一个数列,也就是一系列的数,这个是句废话,但是必须得说

其次,除了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比赛,那么必须做

如果只是因为编程兴趣的话,这类题可以忽略