九度 1402 特殊的数

bitset<100> bs 100表示bs有100位

bs.count() 表示二进制位为1的个数

bs.set() 把所有二进制位都置为1

bs.reset() 把所有二进制位都置为0

 

#include<iostream>
#include<bitset>
#include<cstdio>
#include<stdlib.h>

int max(int x,int y)
{
	return x>y?x:y;
}
int min(int x,int y)
{
	
	return x<y?x:y;
}
using namespace std;

const int MAXN=1000002;
const int INF=0x7f7f7f7f;

int x,n;
bitset<MAXN> b0,b1;
int main()
{
	int i;
	while(scanf("%d",&n)!=EOF)
	{
		b0.reset();
		b1.reset();
		int maxx=-1,minx=INF;
		for(i=0;i<n;++i)
		{
			scanf("%d",&x);
			maxx=max(maxx,x);
			minx=min(minx,x);
			if(b0[x]==0)
			{
				b0[x]=1;
			}
			else
				b1[x]=1;
		}
		int len=b0.count()-b1.count();
		printf("%d\n",len);
		//if(!len)
			//continue;
		bool sign=false;
		for(i=minx;i<=maxx;++i)
		{
			if(b0[i]==1&&b1[i]==0)
			{
				if(sign)
					printf(" %d",i);
				else
				{
					printf("%d",i);
					sign=true;
				}
			}
		}
		if(len)
			printf("\n");
		
	}
	return 0;
}

 

posted @ 2012-03-19 11:20  dupuleng  阅读(110)  评论(0)    收藏  举报