1 条题解

  • 1
    @ 2025-1-16 15:30:27
    #include <iostream>
    using namespace std;
    int x, n, ans;
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> x;
    		ans ^= x;
    	}
    	cout << ans;
    }
    
    
    
    • @ 2025-3-2 15:32:54

      善良的天雄

      又在为迷途的羊羔coder们指点迷津了

      我为看不懂的解释一下吧:

      关键点:

      如果有一根筷子长度出现奇数次,其他的筷子长度都出现偶数次,可以利用异或的性质来求解。 异或运算有以下特点: a ^ a = 0,相同的数异或结果是 0。 a ^ 0 = a,一个数与 0 异或结果是它自己。 异或运算是交换律和结合律的,即 a ^ b ^ c = a ^ (b ^ c)。 利用这些性质,当我们对所有的筷子长度进行异或操作时,相同的长度会被消除(因为 a ^ a = 0),最终留下的就是那个出现奇数次的长度。

  • 1

信息

ID
5527
时间
2000ms
内存
4MiB
难度
2
标签
递交数
22
已通过
12
上传者