HDU 2095

HDU 2095 解题报告
本文介绍了解决HDU 2095题目的方法,通过使用异或运算来找出唯一的单个数。该方法可以有效处理一组数据中只出现一次的特殊数值。

      做了一下HDU  的2095 题。开始一直都不会。后来就百度了一下。看到的大都是将所有输入的数异或一下。然后得到的最后结果就是要输出的结果。但是我还是没能理解!然后就又反复得看了一下题目要求。

     

  

In the new year party, everybody will get a "special present".Now it's your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present's card number will be the one that different from all the others, and you can assume that only one number appear odd times. For example, there are 5 present, and their card numbers are 1, 2, 3, 2, 1.so your present will be the one with the card number of 3, because 3 is the number that different from all the others.
  题目中,这句话说得那是一个有意思啊。" 你的礼物卡片上的数据是所有数据中唯一只有一个的而且不同与其他数据的数 "。所以呢,当将所有的数据进行异或的时候。那些相同的数据就异或之后为 0 ,比如7 ^ 7 = 0 .而你自己的那个呢是个"单身汉",其他的所有数据异或完后就只剩下一个 0 ,"单身汉" ^ 0 = "单身汉"。
所以代码如下:
#include <stdio.h>

int main()
{
	int n,fact,m;
	while(scanf("%d",&n) && n)
	{
		fact = 0;
		while(n--)
		{
			scanf("%d",&m);
			fact^=m;
		}
		printf("%d\n",fact);
	}
	return 0;
}

转载于:https://www.cnblogs.com/nicolase/archive/2010/11/20/1882671.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值