首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

跟为指定值的连续序列

2013-09-05 
和为指定值的连续序列输入一个整数s,打印出所有和为s的连续正整数序列(至少包含两个数)。例如,对于输入15,

和为指定值的连续序列

输入一个整数s,打印出所有和为s的连续正整数序列(至少包含两个数)。例如,对于输入15,由于有1+2+3+4+5=15,4+5+6=15,7+8=15,所以打印出1~5、4~6、7~8三个序列。


有个比较好的做法是利用等差数列求和公式:s=a*n+n*(n-1)/2。这里的a是第一个元素,n是项数。


int solve(int A[], int N, int val){int count = 0, beg = 1, end = 0, sum = A[0];while (beg < end && end < N) {if (sum == val) {count++;// A[beg] -> A[end]sum += A[++end];} else if (sum < val) {sum += A[++end];} else {sum -= A[beg++];}}return count;}


热点排行