用连续自然数之和来表达整数
【用连续自然数之和来表达整数】一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。
输入描述:
一个目标整数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);
}
}