托米的位运算

网友投稿 254 2022-08-30

托米的位运算

题目描述

托米完成了1317的上一个任务,十分高兴,可是考验还没有结束 说话间1317给了托米 n 个自然数 a1... an, 托米可以选出一些带回家,但是他选出的数需要满足一些条件 设托米选出来了k 个数 b1,b2... bk, 设这个数列 b 的给值为 b 中所有数按位与的结果,如果你能找到一个整除 b 的最大的 2v,(v≥ 0), 则设定 v 为这个数列的给价,如果不存在这样的 v,则给价值为 -1, 1317 希望托米在最大化给价的情况下,最大化 k

输入描述:

第一行输入一个整数 n, 第二行输入 a1...an

输出描述:

第一行输出最大的整数 k, 第二行输出 k 个整数 b1... bk, 按原数列的相对顺序输出 (如果行末有额外空格可能会格式错误)

示例1

输入

5 1 2 3 4 5

输出

2 4 5

备注:

n≤ 105, a1... an < 231

看到这道题,会知道很明显的需要从高到低,枚举二进制位。

代码:

#includeusing namespace std;#define ll long longconst int maxn=1e5+10;int a[maxn];vectorG;int main(){ int n; scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } for(int i=30; i>=0; i--) { int k=(1<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:卖身1.8亿的背背佳身后,隐藏了一个“营销大师”!(背背佳 营销)
下一篇:[HNOI2002]营业额统计(splay)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~