所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a−1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b−1 的平方和。例如 83−73=169=132,而 13=32+22,于是 8 和 3 就是一对缘分数。
给定 a 所在的区间 [m,n],是否存在缘分数?
输入格式:
输入给出区间的两个端点 0<m<n≤25000,其间以空格分隔。
输出格式:
按照 a 从小到大的顺序,每行输出一对缘分数,数字间以空格分隔。如果无解,则输出 No Solution
。
输入样例 1:
8 200
输出样例 1:
8 3
105 10
输入样例 2:
9 100
输出样例 2:
No Solution
代码实现:
import java.io.*;
/**
* @author yx
* @date 2022-07-27 19:47
*/
public class Main {
static PrintWriter out=new PrintWriter(System.out);
static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
static StreamTokenizer in=new StreamTokenizer(ins);
public static void main(String[] args) throws IOException {
in.nextToken();
int m=(int) in.nval;
in.nextToken();
int n=(int) in.nval;
boolean flag=false;
for (int i = m; i <= n ; i++) {
int ans1=(int) Math.sqrt(i*i*i-(i-1)*(i-1)*(i-1));
if(ans1*ans1!=i*i*i-(i-1)*(i-1)*(i-1)){
continue;
}
int temp=ans1+1;
for (int j = 1; j <=temp ; j++) {
int ans2=j*j+(j-1)*(j-1);
// System.out.println(i+" : "+j+" == "+ans1 +" ? "+ans2);
if(ans1==ans2&&i!=1){
out.println(i+" "+j);
flag=true;
}
}
}
if(!flag){
out.println("No Solution");
}
out.flush();
}
}
标签:分数,JAVA,int,ans1,样例,static,1103,new,out From: https://blog.51cto.com/u_15754851/5763821