2 21 只考加法的面試題

2021-06-09 14:42:33 字數 669 閱讀 1115

[question]

我們知道:1+2=3;

4+5=9;

2+3+4=9;

等式左邊都是兩個以上連續的自然數相加,那麼是不是所有的整數都可以寫成這種形式呢?

寫乙個程式,對於乙個32位正整數,輸出它所有的連續自然數之和的算式。 

[analysis]

可以發現任意自然數序列其實是公差為1的等差數列,那麼數列前n項和公式有a1*n +n*(n-1)/2 = sn,而這裡sn = 輸入的正整數input。通過分析a1只需在集合[1,input/2)中,把上式等效變形為n2+(2a1-1)n-2input = 0,n的取值為中學學得2a分之負b加減根號下b方減4ac,哈,如果n為乙個正整數,那麼符合條件輸出。如何判斷n為合法的正整數不是浮點數呢?看看我的solution吧。我演算法的時間複雜度是o(n)線形級別的,不知哪位大蝦的solution可以再快些。 

#include #include "math.h"

using namespace std;

bool ispositiveint(float num)

void outputresult(int a1,float n,int input)

{ int loopcounter = 1;

int a = a1;

cout<>input;

cout<

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...

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

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

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

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