2021 03 28 定義一種數 可以表示成若干(數量 1)連續正數和的數 。比如 如何解答呢?

時間 2021-05-11 23:17:04

1樓:

等差數列求和公式:

題中要求連續正數,意味著:公差d=1,起始項a1>0,項數n>1。

已知Sn,設為定值,則n越小則a1越大,a1越小則n越大,反之亦然。n最小為2,n最大時a1為最小的1。嘗試所有的n值,計算a1,判斷它是正整數即可。

#include

#include

#include

// 分析乙個數是否能表示成連續正整數和

bool

is_num_seq

(intSn,

int*

ret_a1

,int

*ret_n)}

return

false;}

intmain

(void

)else

}printf("

\n");fflush

(stdout);}

system

("PAUSE"

);// 暫停

return0;

}以上是傳統的思考邏輯和實現。注意到 @Idris2 提出的「除了1,2,4,...這樣2^n的數都行」,雖然不明白如何分析出來,但測試發現的確如此。按照這一邏輯實現如下:

#include

#include

#include

// 分析乙個數是否能表示成連續正整數和

bool

is_seq

(intx)

return

false;}

intmain

(void

)else

printf("

\n");fflush

(stdout);}

system

("PAUSE"

);// 暫停

return0;}

2樓:

設這一系列數為n+1,n+2...n+a,那麼他們的和為a(2n+a+1)/,可見兩個數為一奇一偶,也就是說只要乙個數的質因子有奇數就可以,哪些數滿足這個條件呢?除了1,2,4,...

這樣2^n的數都行

3樓:0x76

根據等差數列求和公式,可得

2N = 2 * n * a + n * (n - 1)變換一下可得

a = (N / n) - ((n - 1) / 2)其中,N為傳入整數,n為連續數字的個數,a為第乙個數字。

那麼如果乙個N滿足條件,那麼就可以找到上面方程的整數解。

那麼可根據上式對 n 遍歷,當 n 為奇數時,判斷 N 是否為 n 的倍數;當 n 為偶數時,判斷 2 * (N % n) 是否等於 n 即可。n 從 2 開始到 n * (n - 1) > 2N 為止。

複雜度為O(sqrt(N)).

「不能被定義」是一種定義嗎?

執悲今厄 又乙個因否定而產生的糾結。否定果真是萬惡之源 如果乙個否定句不能被轉化為肯定句來描述,那麼這樣的否定句就是不成立的。 青春 不能被定義也是一種定義,這是乙個悖論,即這裡面有邏輯矛盾。這就說明不存在不能被定義的事物。相當於用反證法證明了一切事物都可被定義。 Piper 如果把定義這個概念畫乙...

怎麼理解「vector不是一種資料型別,而只是乙個類模板,可用來定義任意多種資料型別」這句話?

定義乙個int型別 vector不是一種資料型別具體表現就是,不能用vector i的方式定義乙個列表。inti 模板本身就是用於擴充套件支援不同型別的,只要是模板,肯定就是多型別的,否則也沒必要寫模板了。vector i 乙個int型別vector vector c 乙個字元型別vector 基礎...

數框框是怎樣一種體驗,用著CPU顆數核數很多的電腦是怎樣一種體驗?

魯哲 x5650雙路,24core,64g記憶體,薅資本主義羊毛配了1TB ssd。大部分時間真心用不上 在家待命,遠端開機跑一些東西。靈魂如下 肉體如下 公司有30臺16core 64G的vpc 組了個spark cluster,任務一多還是要一堆任務排隊等資源,還有幾台自建伺服器,20核還是多少...