数学问题(普及难度)(数论题)
题目背景
为了欣赏教官萌币的可爱表情,某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]); }