問題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,...