斐波那契数列对10007取余数

ぃ、小莉子 提交于 2020-01-27 00:10:58

Mn = ( Mn-1 + Mn-2 ) % 10007

因为
*F(n) = X1 * 10007 + Mn
F(n+1) = X2 * 10007 +Mn+1
F(n+2) = F(n) + F(n+1)
=(X1 + X2)+100007 + Mn + Mn+1
Mn+2 = F(n+2) / 10007 = Mn + Mn+1
所以 Mn = ( Mn-1 + Mn-2 ) % 10007

#include <iostream>
int main()
{
    int a = 1,b = 0, sum = 0,t = 0, n;
    std::cin >> n;
    while ( ++t <= n )
    {
        sum = ( a + b ) % 10007;
        a = b;
        b = sum;
    }
    std::cout << sum;
    return 0;
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!