华为OD机试(2021-04)题目一
题目:
一个 0-1000 的整数,拆解为一个(本身)或多个连续自然数的和,按照自然数的个数从少到多输出各个方案 input = solution,方案内的自然数按照从小到大排列
public static void main(String[] args) { Scanner input = new Scanner(System.in); int x = input.nextInt(); if (x <= 1000 && x >= 0){ if (x == 0){ System.out.println(0); }else if (x == 1){ System.out.println(x); System.out.println(0+" "+1); }else { System.out.println(x); for (int i = x; i >=0; i--){ int sum = i; for (int j = i - 1; j >= 0; j--){ if (sum + j == x){ for (int f = j; f < i; f++){ System.out.print(f+" "); } System.out.println(i); sum = sum + j; }else { sum = sum + j; } } } } } }