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

#include
#include
/*
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;
}

 

你可能感兴趣的:(C/C++)