【问题描述】

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

① m、n∈{1,2,…,k},即1≤m,n≤k,(1≤k≤109)。

②(n2-m*n-m22=1

你的任务是:编程输入正整数k,求一组满足上述两个条件的m、n,并且使m2+n2的值最大。例如,从键盘输入k=1995,则输出:m=987   n=1597。

【输入样例】

1995

【输出样例】

m=987

n=1597

极值问题(acms)极值问题(acms)

代码如下:

 1     long m,n,k;
 2     double delt1,delt2,n1,n2;
 3     scanf("%d",&k);
 4     for(m=k;m>=1;m--)
 5     {
 6         delt1=sqrt(5*m*m+4);
 7         n1=(m+delt1)/2;
 8         n=n1;
 9         if(n==n1&&n<=k) break;
10 
11         delt2=sqrt(5*m*m-4);
12         n2=(m+delt2)/2;
13         n=n2;
14         if(n==n2&&n<=k) break;
15     }
16     printf("m=%d\nn=%d\n",m,n);
View Code

相关文章:

  • 2022-12-23
  • 2021-07-11
  • 2021-12-20
  • 2021-11-15
  • 2022-12-23
  • 2021-07-11
  • 2021-10-19
  • 2021-06-27
猜你喜欢
  • 2021-10-18
  • 2021-07-12
  • 2022-02-14
  • 2021-09-19
  • 2021-10-18
相关资源
相似解决方案