《程式設計之美》讀書筆記(十二) 「只考加法的面試題」

2022-02-25 08:12:33 字數 852 閱讀 3972

最近時日,從dangdang買了本mara眾高人寫的《程式設計之美》,裡面有這麼一道題,其中並沒有給出問題的解答。一時興起,就在電腦前動了動手,特獻醜與此。btw,《程式設計之美》應該是每一位熱愛程式設計技術的it從業人員桌案邊必備的好書。當我還在沉浸於找出問題的解決方案時,mara的大俠找出了n個解,並且尋求最優解。他們把乙個看似複雜的問題可以很快地簡單化,找出數學模型,並程式設計實現。keep fighting!!!

[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可以再快些。

[answer-programme]

#include "stdafx.h"

#include

#include

bool ispositiveint(float num)

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

}return 0;

}

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

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

《程式設計之美》讀書筆記

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

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

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