2022-5-16 牛客网练习

序列和
 

描述

给出一个正整数 N 和长度 L ,找出一段长度大于等于 L 的连续非负整数,他们的和恰好为 N 。答案可能有多个,我我们需要找出长度最小的那个。
例如 N = 18 L = 2:
5 + 6 + 7 = 18
3 + 4 + 5 + 6 = 18
都是满足要求的,但是我们输出更短的 5 6 7
 
数据范围: 1 \le n \le 10^{9} \1n109  , 2 \le L \le 100 \2L100 

输入描述:

输入数据包括一行: 两个正整数N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 100)

输出描述:

从小到大输出这段连续非负整数,以空格分隔,行末无空格。如果没有这样的序列或者找出的序列长度大于100,则输出No
 1 import java.util.*;
 2 
 3 public class Main {
 4     public static void main(String[] args){
 5         Scanner in = new Scanner(System.in);
 6         int n=in.nextInt();
 7         int l=in.nextInt();
 8         for (int i=l-1;i<=99;i++){
 9             if ((2*n-i*i-i)>=0&&(2*n-i*i-i)%(2*i+2)==0) {
10                 int first=(2*n-i*i-i)/(2*i+2);
11                 for (int j=first;j<first+i;j++){
12                     System.out.print(j+" ");
13                 }
14                 System.out.println(first+i);
15                 return;
16             }
17         }
18         System.out.print("No");
19         //return;
20     }
21     
22 }

思路:等差数列求和。

posted on 2022-05-16 17:49  阿ming  阅读(16)  评论(0编辑  收藏  举报

导航