输入一个整数s,打印出所有何为s的连续正数序列(至少含有两个数)。
/** 和为s的连续正整数序列 输入一个整数s,打印出所有何为s的连续正数序列(至少含有两个数)。 */ #include<iostream> #include<vector> using namespace std; int main(){ int N; while(cin>>N){ int low = 1; int high = 2; int sum = low + high; int mid = (N+1)/2 vector<vector<int> > result; vector<int> tmpresult; while(low<mid&&low<high){ if(sum==N){ for(int i=low;i<=high;i++){ tmpresult.push_back(i); } result.push_back(tmpresult); tmpresult.clear(); high++; sum += high;//每次high+1,则sum值加上high值 }else if(sum<N){ high++; sum += high;//每次high+1,则sum值加上high值 }else{ sum -= low;//要先减去low值,low值再加 low++; } } //打印一个二维vector for(vector<vector<int> >::iterator it = result.begin();it!=result.end();it++){ for(int i=0;i<(*it).size();i++){ cout<<(*it)[i]<<" "; } cout<<endl; } } return 0; }