No1. 等差數列的應用

問題描述:

給出一個正整數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();
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章