输入一个整数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;
}
相关文章:
-
2021-06-20
-
2022-01-10
-
2021-11-21
-
2022-12-23
-
2022-12-23
-
2021-09-14
-
2021-05-16
-
2021-11-28