08-30 HDU_Steps1 HDU2095

HDU_Step 1 中部分題目解題


1.2.2 HDU_2095 find your present(2)


輸入N個數,其中有個數出現奇數次,找出找個數

一開始想到的是Hash或者用Map,應該都是能過的,但是這題有更簡單的方法,就是異或運算

0^6=0 6^6=0 一個數異或兩次後等於沒有操作

另外使用輸入外掛後,時間由500MS+減到60MS,效果明顯

#include <cstdio>
using namespace std;
inline void scan(int &x){
	char c; 
  	while(c=getchar(), c<'0'||c>'9');
  	x=c-'0';
  	while(c=getchar(), c>='0'&&c<='9') x=x*10+c-'0';
}
int main(){
	int n;
	while(scanf("%d",&n),n){
		int tmp=0,x;
		for(int i=0;i<n;i++){
			scan(x);
			tmp^=x;	
		}	
		printf("%d\n",tmp);
	}	
}

Step 1中其它的題目就都是很水的題目了..


發佈了91 篇原創文章 · 獲贊 6 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章