Fancy Mouse
- -|||

不要被(m2-mn-n2)2=1这个条件迷惑而采用搜索。这题m,n,k的范围不允许用搜索的。找找m,n的规律可以发现,其实m,n都是相邻两项Fibonacci数。而且很容易证明得到当F(n-1),F(n)满足那个式子的时候F(n),F(n+1)也一定满足那个式子。

#include<iostream>
using namespace std;

const int N = 1000;
long long Fibonacci[N];
int main()
{
    Fibonacci[
0= 1;
    Fibonacci[
1= 1;
    
int i = 1;
    
while(i<N)
    
{
        i
++;
        Fibonacci[i] 
= Fibonacci[i-1+ Fibonacci[i-2];
    }

    
long k;
    
long long j;
    
while(cin>>k)
    
{
        i 
= 2;
        
while(Fibonacci[i] <= k) i++;
        j 
= Fibonacci[i-1]*Fibonacci[i-1+ Fibonacci[i-2]*Fibonacci[i-2];
        cout
<<j<<endl;
    }

}
posted on 2005-10-29 10:25  Fancy Mouse  阅读(550)  评论(1)    收藏  举报