前段時間在csdn上溜達的時候發現有人發帖問一道演算法題的解法,看到之後感覺很有意思。題目如下
題目描述:乙個正整數有可能可以被表示為 n(n>=2) 個連續正整數之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。
看到這道題後很容易想到第一中解法,就是2層迴圈的解法。不過感覺該演算法的效率太低,我看到這個題目就立即想起了求和公式,我知道肯定有效率高的解法,剛好也沒事就想著做做看。經過了一段時間的推導,我終於把程式完成了。程式**如下,使用c++寫得。
int main(void) {
int n;
cout<<"please input a num: n=";
cin>>n;
if(n%2)
cout2*n)){
int temp=i-(i+2*n/i-1)/2;
for(int j=0;j<2*n/i;++j)
cout若乙個數k滿足題目的要求,比如可以分解成k=m+(m+1)+....+n,那麼按照求和公式可以得到等式:
(m+n)*(n-m+1)/2=k ------> 2*k=(m+n)*(n-m+1); -----> 2*k一定可以分解成2個整數相乘,即可以被2個整數整除。設m+n=i ------> n-m+1=2*k/i ------> m=i-i+(2*k/i-1)/2 根據題目要求 m>0 就可以得出約束條件,這樣再看程式就一目了然。
百度之星的一道題的解法
前段時間在csdn上溜達的時候發現有人發帖問一道演算法題的解法,看到之後感覺很有意思。題目如下 題目描述 乙個正整數有可能可以被表示為 n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序...
百度之星的一道題
乙個正整數有可能可以被表示為n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提供給程式。輸出資料 在標準輸出上列印出符合題目描述的全部正整數...
一道百度架構題
無論筆試還是面試總會被問到一些架構題,關鍵還無法理解面試官究竟在問什麼。開始積累這些題吧,放到下面 關於海量資料儲存與訪問,涉及到分庫,分表,可以參考此文 1 有乙個監控系統,有大量的資料記錄包括 url,使用者訪問ip,時間 要對這個監控系統進行維護,並提供查詢。設計乙個能儲存和維護1000億條記...