/*
* 求解连续数列.
* 已知连续正整数数列{K}=K1,K2,K3...Ki的各个数相加之和为S,i=N (0<S<100000, 0<N<100000),
* 求此数列K。 输入描述: 输入包含两个参数,1)连续正整数数列和S,2)数列里数的个数N。 输出描
述: 如果有解输出数列K,如果无解输出-1
* 示例1
* 输入 525 6 输出 85 86 87 88 89 90
* 示例2
* 输入 3 5 输出 -1
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
int n = sc.nextInt();
//(k1+K1+n-1)*n/2=s -> k1 = (2s/n - n +1)/2 -> 2s/n-n 必为正整数且为奇数
int k1 = 1;
if ((2*s/n-n)%2 ==0) {
System.out.println(-1);
}else if (2*s%n !=0) {
System.out.println(-1);
}else {
k1 = (2*s/n - n +1)/2;
int[] result = new int[n];
for (int i = 0; i < n; i++) {
result[i] = k1+i;
}
System.out.println(Arrays.toString(result));
}
}
HW算法题:求解连续数列
于 2022-04-10 19:21:42 首次发布