题解 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;
}