和爲S的兩個數字 VS 和爲S的連續正整數

和爲S的連續正整數

  1. 定義first指針指向第一個數字1,last指針指向第二個數字2;
  2. 定義curSum爲first-last之間數字的和;
  3. 比較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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章