和為S的連續正數序列

2022-09-23 09:30:14 字數 1016 閱讀 1331

小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列? good luck!

輸入:輸入有多組資料。

每組資料僅包括1個整數s(s<=1,000,000)。如果s為負數時,則結束輸入。

輸出:對應每組資料,若不存在和為s的連續正數序列,則輸出「pity!」;否則,按照開始數字從小到大的順序,輸出所有和為s的連續正數序列。每組資料末尾以「#」號結束。

樣例輸入:45

100-1

樣例輸出:

pity!

#2 3

#9 10 11 12 13 14 15 16

18 19 20 21 22

#思想:兩個指標一起從前往後掃瞄!若大於s,則下邊界++,若小於s,則上邊界++( 邊界的意思是數列的上下界哦!不要弄錯~ ),相等則輸出一對,然後繼續!s/2,因為後面在掃瞄,兩個數相加就一定大於s了!( 一組序列至少兩個數哦~呵呵 )

**ac:

[cpp]  

#include  

int main()  

if( s < 3 )  

low = 1;  

high = 2;  

sum = 3;  

half = s / 2;  

flag = 0;  

while( low <= half )  

else if( sum < s )  

else  

printf("%d\n", high);  

sum -= low;  

low++;  

}  }  

if( !flag )  

printf("#\n");  

}  return 0;  

}  

和為S的連續正數序列

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的...

和為S的連續正數序列

小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...

和為S的連續正數序列

小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...