題目:《程式設計之美》中的只考加法的面試題。
分析:給定的自然數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...