1 条题解
-
1
对于各位来说,交换两个数的位置实在是太难了,如果不能很好的掌握+-*运算的核心,很难做出这道题来。 因此这里提供一种简单的交换方法:异或。
运算规则:如果a、b的两个值不相同,则结果为1。如果a、b两个值相同,结果为0。
需要掌握的前置知识:
性质: (1)交换律: a ^ b= b ^ a (2)结合律: ( a ^ b) ^ c = a ^ ( b ^ c ) (3)自反性:a ^ b ^ b = a 【由结合律: a^ b ^ b = a^ ( b ^ b ) = a ^ 0 = a】
掌握以上知识后,我们就可以用倒粪一样的操作解决这道题了,但是对于我这样蒟蒻需要注意的是:a,b并不是固定的值,而是随着操作变换的。
code:
#include<bits/stdc++.h> using namespace std; int a, b; int main() { cin >> a >> b; a = a ^ b; b = a ^ b; a = a ^ b; cout << a << " "; cout << b ; return 0; }
- 1
信息
- ID
- 232
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者