0
点赞
收藏
分享

微信扫一扫

1103 缘分数(JAVA)


所谓缘分数是指这样一对正整数 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();
}
}

1103 缘分数(JAVA)_蓝桥杯

 

举报

相关推荐

0 条评论