C++ 程式,用於找到前 n 個自然數的兩個子集之和之間的最小差


假設我們有一個數字 n。考慮前 n 個自然數。我們需要將它們拆分成兩個集合 A 和 B,滿足每個元素正好屬於一個集合,並且 A 中元素的總和與 B 中元素的總和的絕對差最小,並找到那個差值。

因此,如果輸入像 n = 5,則輸出將為 1,因為如果我們令 A = {1, 3, 4} 且 B = {2, 5},則總和值分別為 8 和 7,所以差值是 1。

步驟

為了解決此問題,我們將遵循以下步驟 −

return (n * (n + 1) / 2) mod 2

示例

讓我們看看以下實現,以便更好地理解 −

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   return (n * (n + 1) / 2) % 2;
}
int main() {
   int n = 5;
   cout << solve(n) << endl;
}

輸入

5

輸出

1

更新於: 2022 年 3 月 3 日

146 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始吧
廣告
© . All rights reserved.