BOP 只考加法的題

2021-06-02 17:00:44 字數 866 閱讀 2203

題目:《程式設計之美》中的只考加法的面試題。

分析:給定的自然數n可以表示如下三種形式:

1. 偶數個連續自然數相加。

2個自然數相加   --  m + m+1                                    --> 2*m + 1

4個自然數相加  --   m-1 + m + m+1 + m+2            -->2*(2*m + 1)

...2*k個自然數相加 -- m-k-1 .....+ m + ..... + m+k+1  -->k*(2*m + 1)

2. 奇數個連續自然數相加。

3個自然數相加  -- m-1 + m + m+1                            --> 3*m

5個自然數相加  -- m-2 + m-1 + m + m+1 +m+2    -->  5*m

2*k+1個自然數相加 -- m-k + ... +m +...+ m+k         --> (2*k+1)*m

3. 不能夠用連續k個自然數相加。

void only_add(int n)

} //even numbers sum to n -- n = k(2m+1) [m-1 + m + m+1 + m+2]

for (int i = 2; i < n/2; ++i) }

cout << "dear, can not find the sum of " << n << endl;

return;

}

這篇文章的解法也很好。

程式設計之美 只考加法的算術題

問題描述 給定乙個正整數 n,將n分解為幾個 2個以上 連續的自然數的和。是否所有的數都可以做到。例如 10 1 2 3 4。思路 以最簡單的方式開始思考 1 n為奇數,奇數可以分解為兩個連續的自然數的和。例如 9 4 5。2 當n為偶數,如果n可以被 3 整除,假設a n 3,那麼n還可以被分解為...

2 21 只考加法的面試題

question 我們知道 1 2 3 4 5 9 2 3 4 9 等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?寫乙個程式,對於乙個32位正整數,輸出它所有的連續自然數之和的算式。analysis 可以發現任意自然數序列其實是公差為1的等差數列,那麼數列前n項和公...

2 21 只考加法的面試題

我們知道 1 2 3 4 5 9 2 3 4 9 等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?num i i 1 i 2 i k 1 一共有k個數。因為 num 2 i k 1 k 2 接下來分析 2 i k 1 k 1 2 的特徵。2 i 為偶數。若k為奇數,k...