首页 > 试题广场 >

序列和

[编程题]序列和
  • 热度指数:104036 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给出一个正整数 N 和长度 L ,找出一段长度大于等于 L 的连续非负整数,他们的和恰好为 N 。答案可能有多个,我我们需要找出长度最小的那个。
例如 N = 18 L = 2:
5 + 6 + 7 = 18
3 + 4 + 5 + 6 = 18
都是满足要求的,但是我们输出更短的 5 6 7

数据范围:

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


输出描述:
从小到大输出这段连续非负整数,以空格分隔,行末无空格。如果没有这样的序列或者找出的序列长度大于100,则输出No
示例1

输入

18 2

输出

5 6 7
示例2

输入

30 13

输出

No

说明

无法由非负整数构成 
头像 ZXAXKL
发表于 2020-03-19 18:59:19
题目描述给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。例如 N = 18 L = 2:5 + 6 + 7 = 183 + 4 + 5 + 6 = 18都是满足要求的,但是我们输出更短的 5 6 7 解题思路:这题就是 展开全文
头像 Х╃憂傷
发表于 2020-07-17 18:43:31
思路参考:C++代码实现 #include<iostream> using namespace std; int main() { long n,l; cin >> n >> l; double a = 0; long i = 展开全文
头像 目前若离
发表于 2020-03-22 17:39:19
问题描述 给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。例如 N = 18 L = 2:5 + 6 + 7 = 183 + 4 + 5 + 6 = 18都是满足要求的,但是我们输出更短的 5 6 7 输入描述 输入数据 展开全文
首先计算公式,假设k个连续正整数之和为sumk,第一个正整数为x,则sumk = x + (x+1) + ... + (x+k-1) = kx + k(k-1)/2, 则x = (n - (k*(k-1)/2))/k。 由于x必须是正整数,所以由给定的n和k计算得到的x如果为负数的话,则不存在满足条 展开全文
头像 稚园
发表于 2021-03-09 17:50:02
解题思路:利用数学中的等差数列公式,我们假设元素个数为i,等差d为1,和为N。我们可以求出a1.这样我们就可以遍历L(长度在L-100的最小)。只要能够求得一个合法的a1就是找到答案了,就可以进行输出,否则就是找不到 import java.util.Scanner; public class M 展开全文
头像 曹宇轩
发表于 2020-04-14 12:41:02
//java版,借用了大佬思路import java.util.Scanner;public class Main { public static int display(int N,int L) { for(int i=L;i<101;i++) { 展开全文
头像 EXB6D12
发表于 2021-09-06 17:11:38
题目思路 由题干可知输出为等差数列,且公差d=1,Sn=N,项数>L; 则由求和公式转换可知a1(a1为正整数)的值,在根据遍历所得项数即可输出; a1=(2Sn-n*(n-1))/2n #include <iostream> using namespace std; int 展开全文
头像 shopee内推虾
发表于 2020-03-19 16:29:25
Go语言实现一个 基本思路 1 2 3 4 5 6 7前 n 个的和是:1 : 12 : 33 : 64 : 10...例如: 对于给出的样例 18 2长度应为 3// sum(n) 表示从 1 开始前n个数的和于是 18 - sum(3)(6) = 12 % 3 (0) 12 / 3 = 4所以结 展开全文
头像 卖萌小伙张三
发表于 2021-03-05 12:55:29
我用的是滑动窗口。注意有一个大坑就是当整个窗口的和满足条件sum = N,但是整个窗口的长度大于100了,这时如果左边界为0,是可以将左边界往右移动一步的。代码 #include <iostream> #include <cstdio> #include <cstdli 展开全文
头像 就此收手?
发表于 2022-03-24 16:35:59
l分奇偶数情况讨论,奇数情况下能整除,得到序列中位数,从起始a0输出;偶数情况需要满足除法结果小数为0.5,乘以2满足int变量,有些复杂,不如答案判断是否有合法a1简单明了。 public class Main{ public static void main(String[] args) 展开全文