丢失的同学
Time Limit:10000MS Memory Limit:300K
Total Submit:347 Accepted:15
Description
XX大学里一共有N个学生,某一天有一男一女两个同学失踪了~为了排查到底是哪两个同学,校长让所有在校的同学都去报到,并且签下自己的学号。校长让你写一个程序,计算到底是哪两个同学失踪了呢?
Input
第1行为整数N(N<=100000)。以后N-2个整数(均用空格或回车符隔开)表示了剩下N-2个同学的学号。学号是从1..N连续编号的。
Output
一行,按学号从小到大顺序输出两个失踪同学的编号。两个数字之间用一个空格隔开。
Sample Input
6
4
3
1
5
Sample Output
2 6
感觉这题真的很经典。。灵活运用了几种位运算。压缩了空间。。
下面是AC代码:
#include<stdio.h> #include<math.h> int a[3150]; int main() { int n,i,j; int m; int k; int t=0; int s; scanf("%d",&n); for(i=1;i<=n-2;i++) { scanf("%d",&m); k=m/32; a[k]=a[k]|(int)pow(2,m%32); } for(i=0;i<=3150;i++) { if(t==2) break; s=i*32; for(j=0;j<=31;j++) { if(t==2) break; k=a[i]&1; if(k==0&&s+j!=0) { t++; printf("%d ",s+j); } a[i]=a[i]>>1; } } return 0; }