题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

发布时间 2023-12-14 10:59:15作者: 芊嵛

题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

完全平方指用一个整数乘以自己例如1×1,2×2,3×3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数(下面会说到)。

灵巧的写法

这题最大的难点应该就是确定范围了,要是正着想不好确定,那就倒着思考

循环范围:

最小:
先求加上100再加上168后谁能开方,应为完全平方数从0开始,加上100能是完全平方数最小0,再加168那就最小就是168开方约13那就取12

最大:
我没找十分精确,99的平方与100的平方之差就大于168了所以不可能比100更大所以最大取99,有时间可以再求一下。

为什么要%1,因为Math.sqrt()得到的是一个double类型的要想看开方后是不是整数那就取模1看是不是0

package myself;

/**
 * @Auther QY
 * @Date 2023/12/14
 */
public class Thirteen {
    public static void main(String[] args) {
        perfectSquare();
    }

    public static void perfectSquare() {
        for (int i = 12; i < 100; i++) {
            //这层看它减去168是不是还是平方数,也就是原数+100是不是平方数
            if (Math.sqrt(Math.pow(i, 2) - 168) % 1 == 0) {
//                如果是那就减去268得到原数
                System.out.println((int) (Math.pow(i, 2) - 268));
            }
        }
    }
}

大众写法

public static void play() {
    for (int x = -100; x < 100000; x++) {
        if (Math.sqrt(x + 100) % 1 == 0) {
            if (Math.sqrt(x + 268) % 1 == 0) {
                System.out.println(x);
            }
        }
    }
}