7-1 落单的数 (10 分)
"这道题换个女装的工夫就出来啦”
ZUP每次给你2n+2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字并升序输出。
其中:
2<=n<=50000
输入格式:
输入 2n+2个的数字
输出格式:
升序输出没有出现2次的这两个数字
输入样例:
在这里给出一组输入。例如:
1 2 2 3 4 4 5 3
输出样例:
在这里给出相应的输出。例如:
1 5
AC代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.nextLine().split(" ");
int[] a = new int[s.length];
int k = 0;
int x = 0;
for (String string : s) {
a[k]=Integer.parseInt(string);
x^=a[k++];
}
int count=1;
int f1=x,f2=x;
while((x&1)!=1) {x>>=1;count++;}
for (int i = 0; i < a.length; i++) {
if(((a[i]>>count-1)&1)==1)
f1^=a[i];
}
f2=f1^f2;
if(f1>f2) {
f1^=f2;
f2^=f1;
f1^=f2;
}
System.out.println(f1+" "+f2);
}
}