洛谷P1469 找筷子

   题目链接:P1469 找筷子 - 洛谷 | 计算机科学教育新生态

   题目难度:普及—

洛谷P1469 找筷子_第1张图片

   解题思路: 本题我们考虑异或的两个性质:

  •   k个相同的数异或当k为奇数时候结果为本身,否则为0;
  •   0与任何数异或为该数。

注意到上面的题目,求筷子中落单的筷子的长度,根据性质1成双的筷子异或结果为0,如果存在落单的筷子最后肯定是0与该筷子异或得到了该筷子长度。

最后上代码:

#include
using namespace std;
typedef long long ll;
const int N	= 1e7  + 10;
int n,x,ans;

int read()
{
    int s = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-') f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        s = s * 10 + ch - '0';
        ch = getchar();
    }
    return s * f;
}

int main()
{
    n = read();
    
    for(int i = 1; i <= n; i++)
    {
    	x = read();
    	ans ^= x;
	}
    cout << ans;
    
    return 0;
}
 

   

  

你可能感兴趣的:(洛谷数学1基础数学问题,算法,数据结构)