問題描述:
給出一個正整數N和長度L,找出一段長度大於等於L的連續非負整數,他們的和恰好爲N,答案可能有多個,我我們需要找出長度最小的那個。
輸入描述:
輸入數據包括一行: 兩個正整數N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 100)
輸出描述:
從小到大輸出這段連續非負整數,以空格分隔,行末無空格。如果沒有這樣的序列或者找出的序列長度大於100,則輸出No
1> 問題分析
問題相當於已知Sn、d、n,求a1;因爲要求最短序列,所以我們將n在指定範圍內有小到大自增,得到a1則返回;
2> 實現
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int L = sc.nextInt();
for(int i=L;i<100;i++){
if((2*N+i-i*i)%(2*i) == 0 && (2*N+i-i*i)>=0){
int start = (2*N+i-i*i)/(2*i);
for(int j=0;j<i;j++){
if(j==i-1){
System.out.println(start+j);
}else{
System.out.print(start+j+" ");
}
}
sc.close();
return;
}
}
System.out.println("No");
sc.close();
}
}