Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

特殊的数

$
0
0
题目1402:特殊的数

时间限制:2 秒

内存限制:2 兆

特殊判题:

提交:2650

解决:418

题目描述:

现在有n个数,其中有一些出现了一次,一些出现了两次,一些出现了很多次。现在要求你找出那些只出现一次的数,并按升序输出。

输入:

本题有多组case。

每个case有两行,第一行输入一个n,表示有n个数,1<= n <= 1000000。

第二行有n个数字。每个数字的大小范围[1, 1000000]。

输出:

每次输出有两行。

第一行输出一个整数,表示出现一次的数的个数。

第二行按升序输出出现次数为一次的数字,两个数字之间用空格隔开。

样例输入:
5
1 2 2 3 3
7
1 2 2 3 4 4 2
2
2 2
样例输出:
1
1
2
1 3
0

#include<cstdio>
#include<bitset>
using namespace std;
 
int main()
{
    bool flag;
    int n,t,m,i;
    while(scanf("%d",&n)!=EOF&&n)
    {
         m=n;
         bitset<1000001> v,vv;
         for(i=0;i<n;++i)
         {
             scanf("%d",&t);
             if(v[t]==0)  v[t]=1;
             else if(v[t]==1 && vv[t]==0) { vv[t]=1; m-=2; }
             else --m;
         }
         printf("%d\n",m);
         for(i=1,flag=false;i<1000001 && m>0;++i)
         {
             if(vv[i]==0 && v[i]==1)
             {
                 if(!flag) { printf("%d",i); flag=true; }
                 else printf(" %d",i);
                 --m;
             }
         }
         printf("\n");
    }
    return 0;
}
 
/**************************************************************
    Problem: 1402
    User: 3011216016
    Language: C++
    Result: Accepted
    Time:990 ms
    Memory:1196 kb
****************************************************************/


作者:u011747846 发表于2013-12-1 0:43:52 原文链接
阅读:139 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>