1103 缘分数(JAVA)

简介: 所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a−1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b−1 的平方和。例如 83−73=169=132,而 13=32+22,于是 8 和 3 就是一对缘分数。

 

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

image.gif

输出样例 1:

8 3
105 10

image.gif

输入样例 2:

9 100

image.gif

输出样例 2:

No Solution

image.gif

代码实现:

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();
    }
}

image.gif

image.gif编辑

相关文章
|
2月前
|
存储 安全 Java
Java 常用集合分类
Java 常用集合分类
26 3
|
6月前
|
Java
Java 求组合数C(n,m)
Java 求组合数C(n,m)
|
Java API
Java随机类
Java随机类
77 0
|
索引
java202303java学习笔记第四十三天函数-索引-分类2
java202303java学习笔记第四十三天函数-索引-分类2
66 0
|
索引
java202303java学习笔记第四十三天函数-索引-分类1
java202303java学习笔记第四十三天函数-索引-分类1
46 0
java202303java学习笔记第二十九天 综合练习2求和
java202303java学习笔记第二十九天 综合练习2求和
55 0
java202302java学习笔记第十天-求数组的最大值
java202302java学习笔记第十天-求数组的最大值
66 0
java202302java学习笔记第十天-求数组的最大值
java202302java学习笔记第六天-输出稀疏数组
java202302java学习笔记第六天-输出稀疏数组
81 0
java202302java学习笔记第六天-输出稀疏数组
java202302java学习笔记第十五天-字符串数据相乘
java202302java学习笔记第十五天-字符串数据相乘
57 0
java202302java学习笔记第十五天-字符串数据相乘
java202302java学习笔记第六天-稀疏数组2获取有效值个数
java202302java学习笔记第六天-稀疏数组2获取有效值个数
72 0
java202302java学习笔记第六天-稀疏数组2获取有效值个数