和为S的连续正整数
定义first指针指向第一个数字1,last指针指向第二个数字2;定义curSum为first-last之间数字的和;比较S与curSum的大小,若相等则打印first-last;若curSum大,则first后移;若curSum小,则last前移。
#include <iostream>
using namespace std;
void Print(
int first,
int last){
for(
int i=first; i<=last; i++)
cout<<i<<
' ';
cout<<endl;
}
void FindContinueNumbers(
int num){
int first =
1, last =
2;
int mid = (num +
1) /
2;
int curSum = first + last;
while(first < mid){
if(num == curSum){
Print(first, last);
first++;
curSum -= first -
1;
}
else if(curSum < num){
last ++;
curSum += last;
}
else{
first++;
curSum -= first -
1;
}
}
}
int main(){
int num =
9;
FindContinueNumbers(num);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-11792.html