package b2020.t00D;
public class Main {
static long ans = 0;
public static void main(String[] args) {
int num = 2021;
int temp = 0;
for (int i = 1; i < num; i++) {
for (int j = 1; j < num; j++) {
// 两层循环, 将原数2021 - i - j之后, 剩下三层可通过getSumOfThreeIntegers获取
temp = num - i - j;
// 统计
ans += getSumOfThreeIntegers(temp);
}
}
System.out.println(ans);
}
/* 将一个数分解成三个正整数的和 的个数
*
* n值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
* 数量: 0 0 1 3 6 10 15 21 28 36 45 55 66 78 91
*间距 : 1 2 3 4 5 6 7 8 9 10 11 12 13
*/
public static int getSumOfThreeIntegers(int n) {
// 当数低于3时, 结果为0
if (n <= 2) {
return 0;
}
// 当n大于等于3时
// 结果统计
int count = 0;
// 间距, 间距从2到3 3到4。。。开始依次递增1
int spacing = 1;
// 当前值
int value = 3;
// 从3开始到n结果, 就可以统计n分解成三个正整数的和 的 个数
while (value <= n) {
//
count += spacing;
spacing ++; // 间距累加1
value ++; // 值向后推移
}
// 返回统计结果
return count;
}
}
十二届蓝桥杯省赛(B组)第二场D题整数分解JAVA
于 2022-04-05 16:21:11 首次发布