专栏文章
题解:P1001 A+B Problem
P1001题解参与者 15已保存评论 14
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @mipczokv
- 此快照首次捕获于
- 2025/12/03 09:59 3 个月前
- 此快照最后确认于
- 2025/12/03 09:59 3 个月前
题解:P1001 A+B Problem
首先我们需要知道三个性质。
- 。
- 。
- 。
性质 的证明:
对于 在二进制下的每一位都有四种情况。
对于 在二进制下的每一位都有四种情况。
- 在二进制下的第 位为 且 在二进制下的第 位为 ,则 。
- 在二进制下的第 位为 且 在二进制下的第 位为 ,则 。
- 在二进制下的第 位为 且 在二进制下的第 位为 ,则 。
- 在二进制下的第 位为 且 在二进制下的第 位为 ,则 。
发现以上四种情况都成立。
很显然,性质 成立。
有了这三条性质,我们就可以对 一直进行变换,直到 或 为止。
代码实现:
CPP有了这三条性质,我们就可以对 一直进行变换,直到 或 为止。
代码实现:
#include<bits/stdc++.h>
using namespace std;
int add(int a,int b){
if(a==0) return b;
if(b==0) return a;
return add(a^b,2*(a&b));
}
int main(){
int a,b;
cin>>a>>b;
cout<<add(a,b);
return 0;
}
相关推荐
评论
共 14 条评论,欢迎与作者交流。
正在加载评论...