1 条题解

  • 1
    @ 2025-3-3 20:42:46

    对于各位来说,交换两个数的位置实在是太难了,如果不能很好的掌握+-*运算的核心,很难做出这道题来。 因此这里提供一种简单的交换方法:异或。

    运算规则:如果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
    上传者