解题思路: 1、 序列公式 f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 很明显这是一道找规律的题目。 用到模数的一个性质 (a*b)%m=(a%m * b%m)%m, (a+b)%m=(a%m+b%m)%m 由此 f(n)=(A%7*f(n-1)+B%7*f(n-2))%7 虽然1 <= A, B <= 1000,但是A%7与B%7的值的范围只有0~6,也就是说共有49种情况,代入个数手工推算一下,可以发现 f(n)会出现循环(这个是必然的) 知道这个规律后,算法应该很简单了。 2、 结论:必然会出现循环这是基于下面事实:1. R(n+2)=F(n+2) mod P=(F(n+1)+F(n)) mod P=(F(n+1) mod p +F(n) modp) mod p2. 斐波那契数列的最大公约数定理:gcd(F(m),F(n))=F(gcd(m,n))最大公约数定理表明如果F(k)能被N整除,则F(ik)也能被N整除,这就表明了斐波那契数列所含因子的周期性,下面列举:因子:2,3,4,5, 6,7,8, 9,10,11,12周期:3,4,6,5,12,8,6,12,15,10,12我们称所生成的序列为剩余序列,那么一旦出现某个F(k) 能被N整除(这需证明我的一个猜想:对于任意素数P,F(P),F(P-1)和F(P+1)三个中定有一个能被P整除),以后F(ik)都能被N整除,亦即剩余序列周期地出现0,下一个剩余序列值为N-1种可能,总会重复,有两个相邻的重复该序列就一定重复,亦即具有周期性。这个周期叫做皮萨诺周期The sequence of Fibonacci numbers is periodic modulo any modulus (Wall 1960). These periods are known as Pisano periods (Wrench 1969). The Fibonacci numbers modulo for small are tabulated below, together with their Pisano periods. Sloane (mod )2 3 A0116551, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, ...3 8 A0821151, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, ...4 6 A0793431, 1, 2, 3, 1, 0, 1, 1, 2, 3, 1, 0, 1, 1, 2, ...5 20 A0821161, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, ...6 24 A0821171, 1, 2, 3, 5, 2, 1, 3, 4, 1, 5, 0, 5, 5, 4, ...7 16 A0821161, 1, 2, 3, 5, 1, 6, 0, 6, 6, 5, 4, 2, 6, 1, ...8 12 A0793441, 1, 2, 3, 5, 0, 5, 5, 2, 7, 1, 0, 1, 1, 2, ... 3、一个写这个题的博文: 我懒得细看了,先留着。 代码:
|
HDOJ 1005 Number Sequence
原创
©著作权归作者所有:来自51CTO博客作者Stven_King的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
psql窗口函数 ROW_NUMBER的应用
psql窗口函数的使用
窗口函数 一对多 表结构 -
详解数仓对象设计中序列SEQUENCE原理与应用
本文介绍了SEQUENCE的使用场景和相关的函数的使用方法,并对使用SEQUENCE过程中遇到的常见问题及解决方法进行了汇总。
字段 数据库 序列号 SEQUENCE GaussDB(DWS) -
【HDU 1005】 Number Sequence
【题目链接】 点击打开链接 【算法】 矩阵乘法快速幂,即可 【代码】
矩阵乘法 c++ #include i++ 快速幂