NOIP2005初赛阅读程序第4题

来源:互联网 发布:java与c 的区别 编辑:程序博客网 时间:2024/06/14 04:12

Problem

给出g(n)递归定义:

g(n)=n|(n<=1)

g(n)=(2002g(n1)+2003g(n2))% 2005

求第2005项,要求笔算.

Solution

  • 用求斐波那契通项公式的一种“配比系数”的方法:

  • g(n)=(2002g(n1)+2003g(n2))% 2005
    g(n)=(3g(n1)2g(n2))% 2005
    g(n)+xg(n1)=((x3)g(n1)2g(n2))% 2005

  • 求系数配比:1x3=x2.

    • 解得x1=1,x2=2.

这里写图片描述

  • 将解带进去,解得g(2005)=(220051) mod 2005

  • 然后我们可以将2005拆成5,401,再运用欧拉定理(220051) mod 5=22005 mod 4mod 5=2

  • 求得

    x2(mod 5)
    x32(mod 401)

  • 然后再运用中国剩余定理即可.

x=32g(2005)=31