题目要求
分析
按照题目要求,无非是用四个完全平方数填满指定区域罢了。
N就是多大区域而已啦,块数实际上是4块,也就是4个完全平方数。
这样看来这题不难,但我们打个表也是极好的。
先构一个打平方数程序:
public class Pow {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) {
System.out.print((i*i) + ",");
}
}
}
接下来就是进行O(N4)的四重循环啦,凑一凑,OK就计个数。
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] array = new int[] {0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,
484,529,576,625,676,729,784,841,900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681,
1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,
3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,
6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100,8281,8464,8649,8836,9025,
9216,9409,9604,9801,10000};
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(), counter = 0;
scanner.close();
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
for (int k = 0; k <= 100; k++) {
for (int l = 0; l <= 100; l++) {
if (array[i] + array[j] + array[k] +array[l] == num) {
counter++;
}
}
}
}
}
System.out.println(counter);
}
}