题目:输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
其中beg为开始的数,end为结束的数,当sum>n时候,需要减去小的beg,++beg
//求取和为定值的连续的数 #include <iostream> using namespace std; //输出beg和end之间的数 void printcount(int beg,int end) { for (int i=beg;i<=end;++i) { cout<<i<<" "; } cout<<endl; return; } void FindContinuousSequence(int n) { if (n<3) { return; } int beg=1; int end=2; int middle=(1+n)/2; int sum=beg+end; //beg的值一定比middle小 while (beg<middle) { if (sum==n) { printcount(beg,end); } else { while (sum>n) { sum=sum-beg; ++beg; if (sum==n) { printcount(beg,end); } } } ++end; sum=sum+end; } } int main() { int a=0; cin>>a; FindContinuousSequence(a); return 0; }