p.s.个人收录用
题目描述
已知m、n为整数,且满足下列两个条件:
① m、n∈{1,2,…,k},即1≤m,n≤k
②(n2-m*n-m2)2=1
你的任务是:编程输入正整数k(1≤k≤1e9),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。例如,从键盘输入k=1995,则输出:m=987 n=1597。
1e9 = 1000000000
输入
输入k
输出
按样例输出m和n
样例输入 Copy
1995
样例输出 Copy
m=987 n=1597
提示
通过(n2-m*n-m2)2=1这个式子得到m,n之间的数学关系
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
//极值问题
//斐波那契数列
int main()
{
long long int k, a[1000];
scanf("%lld", &k);
a[1] = 1; a[2] = 1;
int i;
for (i = 3;; i++)
{
a[i] = a[i - 1] + a[i - 2];
if (a[i] > k)
break;
}
printf("m=%lld\n", a[i - 2]);
printf("n=%lld\n", a[i - 1]);
}