ハング電動ブラシOJタイトル(2095)

見つけ、あなたの存在(2)

件名の説明:

 

新年のパーティーでは、誰もが特別な贈り物を受け取ることになります。彼らの贈り物を受け取るためにあなたの番を選択します。一つだけのあなたとなっているテーブルの上に贈り物の多くは、あります。これは、それぞれの贈り物に番号が付いています。そして、あなたのギフトの数は、他のすべての贈り物と同じではありません。あなただけの1の数は一度だけ表示されますがあると仮定することができます。例えば、彼らは擬似番号1,2,3,2,1た、5つの贈り物があります。だからあなたの贈り物は、そのラベル3のためです。3が一度登場ため。

入力

入力ファイルは、いくつかのケースで構成されます。
それぞれの場合は、整数N(1 <= N <1000000、及びnは奇数である)まずによって提示されるであろう。それに続いて、nは正の整数は2 ^ 31よりもすべての整数は意志小さく、行に説明します。これらの番号は= 0両端入力presents.nのカード番号を示しています。

出力

それぞれの場合のために、あなたの現在のカード番号であるライン、出力整数。

サンプル入力

5 
1 1 3 2 2 
3 
1 2 1 
0

サンプル出力

3 
2

分析:

使用可能な列挙は、それぞれ、各番号が表示された回数、および登場の後、出力奇数を計算するが、これはあまりにも面倒です。この問題を解決するためのC言語利用可能XOR演算。

その答えによって:

#include <stdio.h>
int main()
{
    int n,m,f; 
    while(scanf("%d\n",&n)!=EOF){
    	if(n==0)break;     //若输入为0,则结束 
    	scanf("%d",&f);    //输入第一个数 
    	n=n-1;
    	while(n--){        //输入剩下的数 
    		scanf("%d",&m);
    		f^=m;          //对输入的数进行异或,若相同则为0,相异则为1 
		}                  //f^0=f ,f^f=0 
		printf("%d\n",f);   //最后答案为那个多余的数 
	}
    return 0;
}

 

公開された76元の記事 ウォンの賞賛3 ビュー1854

おすすめ

転載: blog.csdn.net/ZhangShaoYan111/article/details/104343593