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.