题目:输入一个正数 n,输出所有和为 n 连续正数序列
分析:如 15,1+2+3+4+5=4+5+6=7+8=15,可以看出有3组序列。
此处可以看出当数为奇数时,两连续数相加可以得到,这种组合为数字最大的组合。故我们可以从1到正数的一半(n/2+1)遍历所有和的组合。
#include<stdio.h>void seq(unsigned int n)
{int small=1;int big=2;int i=1;int sum=0;printf("和为%d的所有序列组合如下:n",n);while(small<n/2+1){ sum=0;for(i=small;i<=big;i++){sum+=i;}if(sum==n){for(i=small;i<=big;i++){printf("%d ",i);}printf("n");small++;big=small+1;} else if(sum<n){big++;}else{small++;}}
}int main()
{ seq(15);seq(70);return 0;
}
欢迎留言给出更优的解法!
Juyin@2018/5/12
本文发布于:2024-02-05 04:53:04,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170724569563205.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |