P1147 连续自然数和

/*
题型:数段的连加连减问题
注意 起点要小于M/2; 
*/ 
#include<bits/stdc++.h>
using namespace std;
int M;
int main(){
    scanf("%d",&M);
    for(int a=1;a<=M/2;a++){//因为a如果过了M/2那么再加的话就超过了M 
        int sum=a;
        for(int x=1;a+x<=M;x++){
            sum+=(a+x);
            if(sum==M)printf("%d %d\n",a,a+x);//以x为起点,x是距离 
            else if(sum>M)break;
        }
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章