设整数 m 和 n 在给定闭区间 [a,b] 内,且满足等式 (n2−mn−m2)2=1。请你求出 m2+n2 的最大值。
输入格式:
输入给出两个正整数 a 和 b(1<a<b≤3×104),为闭区间的两个端点。
输出格式:
在一行中按照以下格式输出:
max( m^2 + n^2 ) = s
其中 s
是题面要求的 m2+n2 的最大值,m
和 n
分别对应能取到最大值的 m 和 n 的值。
输入样例:
10 100
输出样例:
max( 55^2 + 89^2 ) = 10946
满分代码:
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int n,m;
int x[30000][3];
int num=0;
int max=-1;
int c=0;
for(n=a;n<=b;n++){
for(m=a;m<=b;m++){
if(n*n-m*n-m*m==1||n*n-m*n-m*m==-1){
x[num][0]=m;
x[num][1]=n;
x[num][2]=n*n+m*m;
if(x[num][2]>max){
max=x[num][2];
c=num;
}
num++;
}
}
}
printf("max( %d^2 + %d^2 ) = %d",x[c][0],x[c][1],x[c][2]);
}