数学问题(普及难度)(数论题)

题目背景

为了欣赏教官萌币的可爱表情,某X给他出了一道数学题..

题目描述

已知m、n为整数,且满足下列两个条件:

(1)m、n∈1,2,3,……,k

(2)(n^2-m*n-m^2)^2=1

对给定的k,求m^2+n^2的最大值

输入输出格式

输入格式:

 

只有一行且只有一个正整数:k

 

输出格式:

 

两行,一组满足条件的m,n,使得m^2+n^2的值最大

 

输入输出样例

输入样例#1:
1995
输出样例#1:
m=987
n=1597

说明

k在longint范围内

输出等号两旁无多余空格

题解

n和m一定是斐波那契数列的相邻两项

 

#include<cstdio>
long long int f[1000]={0,1};
int main(){
    long long int k;
    for(int i=2;i<=100;i++){
        f[i]=f[i-1]+f[i-2];
    }
    scanf("%lld",&k);
    int i;
    for(i=1;;i++){
        if(f[i]>k)break;
    }
    printf("m=%lld\nn=%lld",f[i-2],f[i-1]);
}

 

posted on 2017-03-05 13:50  bennetts  阅读(120)  评论(0编辑  收藏  举报

导航