题解 P1936 【水晶灯火灵】
记f(n,m)=(n^2-mn-m^2)^2
则有f(m+n,m)=[(m+n)^2-n(m+n)-n^2]^2=(m^2+mn-n^2)^2=(n^2-mn-m^2)^2=f(n,m)
易得f(1,1)=1
故1=f(1,1)=f(2,1)=f(3,2)=...
发现m,n是Fibonacci数列相邻的两项,那么问题就极易解答了
#include<cstdio>
using namespace std;
int main()
{
int k,m,n,c;
scanf("%d",&k);
for(m=n=1;m+n<=k;)
{
c=m+n;
m=n;
n=c;
}
printf("m=%d\nn=%d\n",m,n);
return 0;
}