概述
今天刷的题目是平方差,总体不难,考察思路,一起来看看吧!
思路分析
乍一看题干,很少,很喜欢。但仔细一看。。。确实有点懵。
于是我开始分析:
所有能开方且得到是整数的数一定都是,接着就遇到了难点。题干的第二行给我了启发:2025 = 45 * 45 - 0 * 0 ,这不就是两个平方数的差嘛!得出能由两个平方数的差所组成的数。
运行代码
public class Test{
public static void main(String[] args) {
int count = 0;
// 如果可以表示为平方差,则对应下标的数组的值为1
int[] num = new int[2022];
for (int i = 1; i <= 2021; i++) {
//从 1 - 2021 逐个判断
for (int j = 0; j < i; j++) {
// j * j 表示的是在 (0 , i * i) 之间的平方数
// (i * i - j * j) 就是目标的数值
if ((i * i - j * j) <= 2021 && num[i * i - j * j] == 0) {
num[i * i - j * j] = 1;
count++;
}
}
}
System.out.println(count);//最后结果1516
}
}