AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 1. A + B    原题链接    简单

作者: 作者的头像   wzc1995 ,  2019-10-21 01:04:29 ,  所有人可见 ,  阅读 3534


17


3

算法

(位运算实现) $O(\log n)$
  1. 迭代实现 a + b,只能使用位运算。
  2. 首先求出 a ^ b 和 (a & b) << 1,然后把这两个结果分别赋值给 a 和 b,直到 b 为 0。
  3. 异或是加法的基础,进位用按位与来判断。

时间复杂度

  • 每迭代一次,低位至少会减少一次进位,所以最多迭代 $O(\log n)$ 次。

C++ 代码

#include <iostream>

using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    while (b) {
        int x = a ^ b;
        int y = (a & b) << 1;
        a = x;
        b = y;
    }

    cout << a << endl;
    return 0;
}

3 评论


用户头像
有机物   2022-05-14 13:53         踩      回复

tql orz orz orz


用户头像
xhQYm   2020-05-18 21:53         踩      回复

%%%%wzc


用户头像
垫底抽风   2020-05-17 14:26         踩      回复

前排!!


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息