用连续自然数之和来表达整数
【用连续自然数之和来表达整数】一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。
输入描述:
一个目标整数T (1 <=T<= 1000)
输出描述:
该整数的所有表达式和表达式的个数。如果有多种表达式,输出要求为:
1.自然数个数最少的表达式优先输出
2.每个表达式中按自然数递增的顺序输出,具体的格式参见样例。在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。
1.自然数个数最少的表达式优先输出
2.每个表达式中按自然数递增的顺序输出,具体的格式参见样例。在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。
示例1:
输入
9
输出
9=9
9=4+5
9=2+3+4
Result:3
import java.util.*; public class Main{ public static void main(String[]args){ Scanner input = new Scanner(System.in); int i = input.nextInt(); calculate(i); } public static void calculate(int number){ int n = number; int sum=0; for(int i = 1; i*(i+1) <= 2*number; i++){ List<Integer> list = new ArrayList<>(); int min = (number*2/i- i + 1)/2; if (min*i + (i*(i-1)/2) == number){ for(int j=0;j<i;j++){ list.add(min+j); } } if(!list.isEmpty()){ String str = number + "="; for(int i1=0; i1 < list.size(); i1++){ if(i1==0){ str += list.get(i1); }else{ str = str + "+" + list.get(i1); } } sum++; System.out.println(str); } } System.out.println("Result:"+sum); } }