3 条题解

  • 1
    @ 2023-3-16 20:46:44
    #include <iostream>
    using namespace std;
    int n,x,a[10000];
    int main()
    {
        cin >> n;
        for(int i=1;i<=n;i++){
            cin >> x;
            a[x]++;
        }
        for(int i=1;i<=10000;i++){
            if(a[i]%2==1)cout << i;
        }
    }
    
    • 0
      @ 2023-1-29 16:00:56

      这道题可以用异或 我们来看一看某度对异或的解释

      异或运算:异或也叫​半加运算
      其运算法则相当于不带进位的二进制加法
      二进制下用1表示真,0表示假
      则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1) 
      特性:0和任何数做异或运算都等于这个数本身,即0^N=N
      

      同为0,异为1所以说成双的筷子异或后就为0了,只剩落单的那一只 而且0和任何数做异或运算都等于这个数本身,只需把0和落单的筷子长度异或,最后的结果就是落单的筷子长度了

      ACcode:

      #include <iostream>
      #include <cstdio>
      
      using namespace std;
      
      int n,x;
      int main()
      {
          scanf("%d",&n);
          int sum = 0;
          for (int i = 0; i < n; i++)
          {
              scanf("%d", &x);
              sum ^= x;
          }
          printf("%d", sum);
          return 0;
      }
      
      • 0
        @ 2023-1-21 20:20:13
        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
        	int n, i, x, a[1001]={0};
        	cin >> n;
        	for(i = 0; i < n; i++){
        		cin >> x; 
        		a[x]++;
        	} 
        	for(i = 1; i <= 1000; i++){
        		if(a[i]%2 == 1){
        			cout << i << endl;
        		}
        	}
        	return 0;
        }
        
        
        
        • 1

        信息

        ID
        469
        时间
        1000ms
        内存
        64MiB
        难度
        2
        标签
        递交数
        53
        已通过
        34
        上传者