一,题目
输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
二,思路
解法一:连续正序列,不包含n本身。所以子序列中最大元素为 n/2+1
求出到前 i个元素和保存到b数组中,然后遍历数组b ,i>j 时,求b[i] –b[j] ==n。如果等于则输出 j+1 到 I 的序列。
时间复杂度:O(n^2)
#include <iostream>
using namespace std;
void print(int a[],int j,int i)
{
for(int k=j;k<=i;++k)
cout<<a[k]<<" ";
cout<<endl;
}
int main()
{
int n=15;
int a[n];
int b[n];
for(int i=1;i<=n/2+1;++i)
a[i]=i;
b[0]=a[0]=0;
for(int i=1;i<=n/2+1;++i)
{
b[i]=b[i-1] + a[i];
}
for(int i=n/2+1;i>=0;--i)
{
for(int j=i-1;j>=0;--j)
{
if((b[i]-b[j])==n)
{
print(a,j+1,i);
}
}
}
}
解法二:
我们可用两个数small和big分别表示序列的最小值和最大值。
首先把small初始化为1,big初始化为2。
如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。
如果从small到big的序列的和小于n的话,我们向右移动big,相当于向序列中添加big的下一个数字。
一直到small等于(1+n)/2,因为序列至少要有两个数字。
#include <iostream>
using namespace std;
void PrintContinuousSequence(int small, int big)
{
for(int i = small; i <= big; ++ i)
printf("%d ", i);
printf("\n");
}
void FindContinuousSequence(int n)
{
if(n < 3)
return;
int small = 1;
int big = 2; //至少两个元素
int middle = (1 + n) / 2;
int sum = small + big;
while(small < middle)
{
if(sum == n)
PrintContinuousSequence(small, big);
// if the current sum is greater than n,
// move small forward
while(sum > n)//元素偏大
{
sum -= small;
small ++;
if(sum == n)
PrintContinuousSequence(small, big);
}
// move big forward
big ++;
sum += big;
}
}
int main()
{
FindContinuousSequence(15);
}
分享到:
相关推荐
这份文档是四川省七年级的一次数学月考试题,包含了选择题、填空题和计算题。以下是基于题目内容解析的一些重要知识点: 1. **有理数的概念与分类**: - 选择题第2题涉及有理数的分类,包括自然数、分数和负有理数...
13. 简便计算:第二十一题的解答部分需要用到加减乘除运算的简便方法,比如分配律和结合律。 14. 乘法分配律与简便计算:第二十二题要求用简便方法计算,可能涉及乘法分配律的应用。 15. 数轴上点的排序:第二十三...
【计算器操作】第五题要求输入数字103,键入顺序应为先输入1,再输入0,最后输入3。 【数的性质】在第六题中,需要识别相反数、绝对值以及符号的规则。-(-3)是3的相反数,所以A错误;+(-3)是-3,-(-3)是3,B错误;-...
5. **不等式**:选择题第五题讨论了不等式a÷b(a、b均不为零),这涉及到数的大小比较。 6. **长度单位换算**:第六题是长度单位的转换,米到厘米的换算。 7. **数的认识**:第七题纠正了关于数的常见误解,强调...
第五题中,利用等差数列的前n项和公式S_n = n/2 * (2a1 + (n-1)d)以及S8 = 4S4,可以解出首项a1和公差d,然后计算a10。 第六题考察了如何找到使得前n项和Sn最大的n值,通过分析an的表达式,找到正数项的最后一个...
5. 连续偶数的概念:第五题考察连续偶数的性质。三个连续偶数,最大一个是2n+2,那么最小的偶数就是2n,中间的偶数是2n+2-2=2n。 6. 近似数的理解:第六题涉及近似数的精确度和有效数字。8.8×10^3精确到百位,有两...
具体来说,从6个人中选择3个人作为第一组的组合数为C(6,3),但由于两个组是对称的,所以最终的结果需要除以2,避免重复计算。因此,总共有\(C(6,3)/2 = (6! / (3! * 3!)) / 2 = 20 / 2 = 10\)种不同的分组方案。 ##...
设A和B是两个长为n的有序数组,现在需要将A和B合并成一个排好序的数组,任何以元素比较作为基本运算的归并算法在最坏情况下至少要做()次比较** - **解析:** 最坏情况下,每次比较只能确定一个元素的位置,因此...
7. 序列和数列规律:第10题给出了一个数列,1, 3x^2, 5x^3, ...,这个序列的通项公式是(2n-1)x^n,第2015个单项式是4029x^2015。 8. 二进制与十进制转换:二进制是计算机的基础,将十进制数转换为二进制是基础计算...
第五题通过前n项和公式推断等比数列的条件。 这些题目和解析充分展示了等比数列及其前n项和在高中数学复习中的重要地位,同时也是考察学生对基本概念和公式掌握程度的有效手段。在实际解题过程中,学生需要熟练运用...
5. 整式和单项式的区分:第五题涉及代数表达式的分类。整式包括单项式和多项式,而单项式是由字母和数字相乘组成,不含有加减运算;多项式则是由单项式相加或相减构成。根据题目中的表达式,可以分析出整式和单项式...
57.和为S的连续正数序列 Array 关注 58.翻转单词序列 String 58.左旋转字符串 String 59.滑动窗口的最大值 Queue 常考 60.n个骰子的点数 61.扑克牌顺子 62.孩子们的游戏 Math 63.股票的最大利润 Math 64.求1...
17. 等比数列的性质:第十八题理科部分讨论了正数数列的等比性质,需要掌握等比数列的定义、通项公式和前n项和公式。 18. 数列求和与通项公式:第十八题文科部分要求求解数列的通项公式,需要通过已知的和公式推导...
16.设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例f(5,3)=5, 有 5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。 ①以下是该函数的程序段,请将未完成的部分填入,...
1.5.10. 输入一个正数 n,输出所有和为 n 连续正数序列 ................................125 1.6. 面试题集合(五) .......................................................................................126...
例如,在给定的第一道程序题中,通过分析代码逻辑可以得出输入391时,输出结果应为933,这是因为程序通过一系列赋值操作实现了变量值的交换。 以上是对给定CSP-J模拟试题中的知识点进行的详细解释。这些知识点涵盖...
就在第n行之前插入后续文本,如果I后面没有跟数字,就在当前行之前插入文本,如果输入D,后面跟着m,n,一个数字n或者没有数字,就分别删除m到n行,第n行或者当前行,命令L用于显示文本; 6、 用C++编写求多项式...
5. **算法与程序**:第五题通过一个简单的程序框图,让学生分析并输出结果,测试逻辑思维能力。 6. **几何概率**:第六题探讨点P在正方体内距离面的最短距离,计算概率。 7. **线性代数与向量**:第七题中直线与...
5. **负数的个数**:第五题中,`(n是正整数)`表示一个包含n个数的集合,题目要求找出其中的负数个数,需要了解正整数的定义和负数的概念。 6. **数轴上的点与有理数的关系**:第六题涉及到数轴上点的位置关系,例如...
5. 调查方法:第五题涉及到统计学中的调查方式,适合用普查的是D,了解某班学生的数学测试成绩,因为普查适用于总体小且可操作的情况。 6. 不等式的解集:第六题通过图示判断不等式的解集,解集在数轴上表示正确的...