题目描述:给定两个正整数:num和n,编写程序判断能否把num分解为n个连续自然数相加的和,如果能分解,则返回分解得到的n个自然数构成的列表(列表中元素按照升序排列),如果不能分解,则返回一个空列表。
例如:输入值:num=18,n=4
返回值:[3,4,5,6]
解答:
public static int[] solution(int num, int n) {
if (n <= 0 || num < 0) {
return null;
}
int arr[] = new int[n];
if (n == 1) {
arr[0] = num;
return arr;
}
int x = (num - (n * n - n) / 2) / n;
int sum = 0;
for (int i = 0; i < n; i++) {
arr[i] = x;
x++;
}
for (int i = 0; i < n; i++) {
sum += arr[i];
}
if (sum == num) {
return arr;
} else return null;
}