程式設計之美2 21 只考加法的面試題

2021-07-11 00:23:53 字數 815 閱讀 7027

問題1:寫乙個程式,對於乙個數,輸出他所有可能的連續自然數之和的算式。

解:num = a + a+1 + a+2 + a+3 + ...... + a+k-2 + a+k-1 = k(a+a+k-1)/2

= ka + k(k-1)/2

k是整數,a是整數,所以k(k-1)/2也是整數。

#include using namespace std;

void questionone(int n)

{ int k,i,temp = 0;

int flag = 1;//flag用來判斷是否存在a

for(k=2;n>temp;k++)

{temp = k*(k-1)/2;

if((n-temp)%k==0)

{flag = 0;

i = (n-temp)/k;

int cur = k-1;

cout << n << " = ";

while(cur--)

cout << i++ << "+";

cout << i << ";" <

執行結果:

問題2:那些不能表示為連續數字和的形式的數字有什麼規律? 解:

num =  = ka + k(k-1)/2 = k(2i+k-1)/2,由此可知2i是偶數,若k為奇數,k-1為偶數,令x=(2i+k-1)為偶數,所以num=k*x(奇數*偶數);

若k為偶數,則(2i+k-1)為奇數,所以num=(奇數*偶數)。

綜上num必須能寫成奇數與偶數的乘積,所以只有2^n不能夠寫成連續數字和的形式。

程式設計之美2 21 只考加法的面試題

題目 我們知道 1 2 3 4 5 9 2 3 4 9 等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?問題1.寫乙個程式,對於乙個64位正整數,輸出它所有可能的連續自然數 兩個以上 之和的算式 問題2.有的數例如32就找不到這樣的表達,這樣的數字有什麼規律?問題3....

程式設計之美2 21 只考加法的面試題

問題描述 寫乙個程式,對於乙個64位正整數,輸出它所有可能的連續自然數 兩個以上 之和的算式。例如 3 1 2 9 5 4 9 2 3 4。剛開始看到這個題目,直接想到的方法就是蠻力解決 即對於每乙個輸入的整數,從1開始加,一直加到等於或者大於這個整數為止。如果等於這個整數,則找到了一種連續自然數相...

只考加法 程式設計之美2 21

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