找出相加能得給定數的連續的數

2021-06-10 23:42:13 字數 664 閱讀 6298

大冬的面試題。

題目大意:給定乙個數n,找出幾個連續的數,這幾個數相加等於n。找出所有這樣的數。

比如給出15,有7 + 8 = 15,有4 + 5 + 6 = 15,還有1 + 2 + 3 + 4 + 5 = 15。

想了下,用最笨的辦法for出來...下面貼**。

#include #include #include #include #include using namespace std;

// n為給定數,m為n除i所得的係數,i為主調函式中的迴圈變數

vectorcul(int n, int m, int i)

if (sum != n)

return ret;

}// 列印該有效的結果

void print(vectorv)

sort(v.begin(), v.end());

for (vector::iterator it = v.begin(); it != v.end(); ++it)

cout << endl;

}// 功能開始

void func(int n)

else

return; }}

int _tmain(int argc, _tchar* argv)

連續的自然數相加

正整數中有些數字是可以由連續的自然數相加而得,比如 1 2 3 4 5 9 2 3 4 9 這裡再列出它的三個問題 1 寫乙個程式,對於任意64位正整數,輸出它所有可能的連續自然數之和的算式?2 怎麼樣的數字是不能由連續的自然數相加而得,並且證明?3 64位正整數範圍內子串行數目最多的數是哪乙個?能...

949 給定數字能組成的最大時間(簡單題)

題目描述 給定乙個由 4 位數字組成的陣列,返回可以設定的符合 24 小時制的最大時間。最小的 24 小時制時間是 00 00,而最大的是 23 59。從 00 00 午夜 開始算起,過得越久,時間越大。以長度為 5 的字串返回答案。如果不能確定有效時間,則返回空字串。示例 1 輸入 1,2,3,4...

計算和為給定數的連續正整數數列

比如 sn 100 時,總和為100 的連續正整數數列有 1100 218 19 20 21 22 39 10 11 12 13 14 15 16 對於這種演算法的設計,我們最容易想到的就是從 1 到 sn 迴圈遍歷所有的數,對於每個數再迴圈計算是否以這個數為起點總和正好是sn。這種演算法的時間複雜...