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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP