zoukankan      html  css  js  c++  java
  • hdu 2095 find your present (2)

    点击打开链接

    题目意思是找出卡片中只出现一次的数,而且题目还保证只有一个只出现一次的数。
    我们可以这样想既然只有这一个,那么其他数出现偶数次。联想到异或运算,比如1和0,1^0=1,1^1=0, 0^0=0, 0^1=1。我们可以发现对于0和1,相同的数进行异或运算为0,不同的两个数进行异或运算结果是1,而对于其他的数,只要把他转换成二进制数,然后根据运算法则进行运算,得出结果,如0^5=5, 1^5=2。而且异或运算是可结合的,比如:(1^2)^2=1^(2^2)。回到题目,对输入的数进行异或运算,最后的结果必定是只出现奇数次的那个数。

    #include"stdio.h"
    int main()
    {
    	int fact,n,m;
    	while(scanf("%d",&n)!=EOF&&n)
    	{
    		fact=0;
    		while(n--)
    		{
    			scanf("%d",&m);
    			fact^=m;
    		}
    		printf("%d\n",fact);
    	}
    	return 0;
    }
    



  • 相关阅读:
    hash介绍
    序列化
    面向对象编程
    计算机系统基础知识05
    19、Python之队列
    18、Python之多线程
    17、Python之paramikomo
    16、Python之socket网络编程
    15、Python之异常处理
    14、Python之反射
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365261.html
Copyright © 2011-2022 走看看