小编Nic*_*yan的帖子

为什么 n*(n+1)/2 % 2 在 if 条件下等价于按位运算 (n+1) & 2?

再次更新:抱歉放错了需要登录的链接...你现在可以看到代码了

更新:抱歉误导...已经编辑了标题


有一个问题

将序列划分为1 ... n具有相同总和的 2 个序列,例如...您可以划分[1 2 3 4 5 6 7][1 6 7]and [2 3 4 5],但并非所有从 1 到 n 的序列都可以这样划分,显然如果 1 到 n 的总和,即n*(n+1)/2,如果这value 是奇数,这是不可能的。

但我想知道,为什么条件[n*(n+1)/2 % 2]可以替换为[(n+1) & 2]

我在网站上看到这个

问题网站是:https : //cses.fi/problemset/task/1092

该代码在这里:https : //paste.ubuntu.com/p/GfVG9R67zj/

///2021-06-17 02:21:43  SchizoYoshi C++17   0.10 s
///paste from https://cses.fi/problemset/hack/1092/entry/2352488/
#include <iostream>
auto& c = std::cout;

int main() {
    int n, …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm bit-manipulation

-1
推荐指数
1
解决办法
152
查看次数

标签 统计

algorithm ×1

bit-manipulation ×1

c++ ×1