当前位置: 代码迷 >> 综合 >> noip2005 g(k-1) g(k-2)
  详细解决方案

noip2005 g(k-1) g(k-2)

热度:44   发布时间:2024-01-21 09:39:08.0

#include<stdio.h>
#include<stdlib.h>
/*
f(x) = (2002*f(x-1)+2003*f(x-2))%2005

可以简化成f(x)=(-3*f(x-1)-2*f(x-2)) % 2005
然后转成递推 f[x]=(-3*f[x-1]-2*f[x-2])% 2005 甚至迭代

or
return (2005-(3*g(k-1)+2*g(k-2))%2005);


*/

int main()
{
int i,f1,f2,f0;
f1=1; //f1用来表示递归式中的f(x-1),初始为f(1)=1
f0=0; //f0用来表示递归式中的f(x-2),初始为f(0)=0
for(i=2;i<=2005;i++)
{
f2=(-3*f1-2*f0)%2005;
f0=f1;
f1=f2;
}
printf("%d",(2005+f2)%2005);

system("pause");
return 0;
}