雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

奇异数

Posted on 2012-01-11 09:38  huhuuu  阅读(245)  评论(0编辑  收藏  举报

规定内存限制为3mb

在一个数列里n个数,输出不为m个数字的那个数

5 3
2 2 3 3 3 输出3

9 2
1 1 3 2 2 3 3 4 4 输出3

9 4
1 2 2 1 2 1 2 3 1 输出3

 

开a[64]的数组记录二进制转化好的数

最后对该数组取余%m

在对应的/(n%m)

数组转化为数字即可

View Code
#include<stdio.h>
#include<string.h>

int a[64];

int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i,temp,add;

memset(a,0,sizeof(a));
for(i=1;i<=n;i++)
{
scanf("%d",&temp);
add=0;
while(temp)
{
if(temp%2==1)
a[add]++;
temp=temp/2;
add++;
}
}

int p=n%m;
for(i=0;i<=add;i++)
{
a[i]=a[i]%m;
a[i]=a[i]/p;
}

int all=0;
for(i=0;i<=add;i++)
{
if(a[i])
all+=1<<i;
}

printf("%d\n",all);
}
}