爱买手办的张三

红石音乐

https://ac.nowcoder.com/acm/contest/5733/A

#include<bits/stdc++.h>
using namespace std;
set<int>s;
int main()
{
int n,h,cn=1,a[100001]={0},k=0,sum=0;
scanf("%d",&n);
printf("1\n");
printf("%d\n",n);
h=n;
while(1){//找出哪几位在二进制下为0
if(!(h&1)){
a[k]=cn;
k++;
}
cn=cn2;
h=h>>1;
if(h==0)
break;
}
for(int j=0;j<k;j++)
sum+=a[j];//得出满足题意的数的位不能为0的集合
for(int i=0;i<=n;i++){
if(!(i&sum))//循环找出满足二进制数位在那几位不为0的条件
s.insert(i);
}
set<int>:: iterator it;
printf("%d\n",s.size());
for(it=s.begin();it!=s.end();it++)
printf("%d\n",</int>
it);
return 0;
}</int>

全部评论

相关推荐

深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务