Fib && 组合数

非常神的一道题:
定义:

F(n)=F(n1)+F(n2)

S(n)=k=0nCknF(k)

给定一个数n(n <= 1e+12),判断S(n)是否能被8整除。
整理式子:
S(n)=k=0nCkn(15[(1+52)k(152)k])

S(n)=15k=0nCkn[(1+52)k(152)k]

有二项式定理:
(a+b)n=k=0nCknakbnk

则:
(a+1)n=k=0nCknak

S(n)=15[(3+52)n(352)n]

然后我们小学学过一种东西叫做:
如何把一个东西写成完全平方的形式?
嗯……
3+52=126+25=1+52

S(n)=15[(1+52)2n(152)2n]=F(2n)

然后我们只需要判断8是否能整除F(2n)即可。
暴力找循环节,发现结论:
puts(n % 3 ? “No” : “Yes”);
这个还是推导的过程有趣些……
——题目来自ACdreamers的博客中,推导只是我看了他的题解之后写的。

你可能感兴趣的:(Fib && 组合数)