牛客——xay loves or与 __builtin_popcount的使用

news2024/10/9 16:20:57

xay loves or

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行思路

题目要求我们计算有多少个正整数 yy 满足条件 x \text{ OR } y = sx OR y=s。这里的“OR”是指按位或运算。为了理解这个问题,我们需要考虑按位或运算的性质。

对于任意两个位 a_iai​ 和 b_ibi​(a_i, b_i \in \{0, 1\}ai​,bi​∈{0,1}),按位或运算的结果 c_ici​ 为:

  • 如果 a_i = 0ai​=0 且 b_i = 0bi​=0,那么 c_i = 0ci​=0。
  • 否则,c_i = 1ci​=1。

因此,如果 x \text{ OR } y = sx OR y=s,那么对于 ss 中每一位为 1 的位置,xx 或 yy 在对应位置至少有一个 1;对于 ss 中每一位为 0 的位置,xx 和 yy 在对应位置都必须是 0。

  1. 对于 ss 中每一位为 0 的位置,如果 xx 在该位置也是 0,则 yy 在该位置也必须是 0,否则无法满足 x \text{ OR } y = sx OR y=s。
  2. 对于 ss 中每一位为 1 的位置,如果 xx 在该位置是 0,则 yy 在该位置可以是 0 或 1;如果 xx 在该位置是 1,则 yy 在该位置可以是 0 或 1,因为 xx 已经确保了结果位为 1。

运行代码

#include <iostream>
#include <bitset>
#include<math.h>
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int x, s;
    cin >> x >> s;
    if ((s & x) == x) {
        cout << int(pow(2, __builtin_popcount(x))) - (x == s) << "\n";
    } else {
        cout << 0 << "\n";
    }
    
    return 0;
}

代码思路

  1. 输入读取:首先,我们读取两个整数 x 和 s

  2. 条件判断:检查 s & x 是否等于 x。如果 s & x != x,说明 s 中有些位为 0 而 x 中对应位为 1,这是不可能的,因为 x OR y 的结果在这些位上必须是 1。因此,直接输出 0。

  3. 计算符合条件的 y 数量

    • 如果 s & x == x,说明 x 中为 1 的位在 s 中也必须是 1。接下来,我们需要计算 s 中为 1 而 x 中为 0 的位的数量。
    • 使用 __builtin_popcount(s & ~x) 计算这些位的数量。
    • 每个这样的位可以自由选择 0 或 1,因此符合条件的 y 的数量是 2 的这些位的数量次方。
    • 由于 y 必须是正整数,我们需要减去 y = 0 的情况。当 x == s 时,y = 0 是唯一的情况,因此需要减去 1。

__builtin_popcount

函数描述

__builtin_popcount 是 GCC 编译器提供的一组内置函数之一,用于计算一个整数的二进制表示中 1 的个数。具体来说,__builtin_popcount 接受一个无符号整数作为参数,并返回该整数的二进制表示中 1 的个数。

举例:假设有一个整数 x = 5,其二进制表示为 101。调用 __builtin_popcount(5) 将返回 2,因为 101 中有两个 1。

语法:

int __builtin_popcount(unsigned int x);

使用场景

在上述代码中,__builtin_popcount 用于计算 s & ~x 中 1 的个数。具体来说:

  • ~x 是 x 的按位取反。
  • s & ~x 表示 s 中为 1 而 x 中为 0 的位。
  • __builtin_popcount(s & ~x) 计算这些位的数量。
代码示例
#include <iostream>
#include <bitset>

int main() {
    unsigned int x = 5; // 二进制表示为 101
    unsigned int s = 7; // 二进制表示为 111

    unsigned int result = s & ~x; // 111 & ~101 = 111 & 010 = 010
    int count = __builtin_popcount(result); // 010 中有 1 个 1

    std::cout << "Result: " << std::bitset<8>(result) << ", Count: " << count << std::endl;

    return 0;
}
输出
Result: 00000010, Count: 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2199466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用AI绘画工具生成中国风插画?Midjourney保持风格一致出图

如何运用AI绘画工具如Midjourney&#xff0c;生成符合我们特定要求的艺术作品是一门精进的技巧&#xff0c;尤其当你想生成具有鲜明特色的国风插画时&#xff0c;纯文本提示词的局限性常常使我们难以达到预期效果。然而&#xff0c;借助Midjourney的高级参数功能——特别是sref…

中航资本:招保万金全跌停!“人气王”创历史,半日成交突破600亿

狂奔的“牛”总算迎来“回头”。 今日是新股民入市第一天。依据我国结算的安排&#xff0c;关于10月1日&#xff08;周二&#xff09;至10月8日&#xff08;周二&#xff09;提交请求的新开证券账户&#xff0c;于10月9日&#xff08;周三&#xff09;起可用于买卖。 不过&am…

GIS、向量、文字检索... 火山引擎 ByteHouse 集成全场景分析能力

企业业务场景增多、规模扩大&#xff0c;对于底层数据架构来说&#xff0c;可能也会愈加复杂。 比如&#xff0c;某企业因自身业务发展&#xff0c;需要引入向量检索能力&#xff0c;但前期选型的技术架构并不能直接支持&#xff0c;只能重新引入向量数据库。这意味着&#xff…

JavaWeb - 9 - MySQL

数据库&#xff1a;DataBase(DB)&#xff0c;是存储和管理数据的仓库 数据库管理系统&#xff1a;DataBase Management System(DBMS)&#xff0c;操纵和管理数据库的大型软件 SQL&#xff1a;Structured Query Language&#xff0c;操作关系型数据库的编程语言&#xff0c;定…

经纬恒润荣获2024中国汽车供应链大会创新成果奖

2024年9月24日-26日&#xff0c;2024中国汽车供应链大会暨第三届中国新能源智能网联汽车生态大会在武汉隆重举办。本届大会以“新挑战、新对策、新机遇——推动中国汽车供应链可持续发展”为主题&#xff0c;集聚政府主管领导、行业专家、汽车及零部件企业精英和主流媒体&#…

这个 JavaScript API 比你想象中更强大!

大家好&#xff0c;我是 ConardLi。 今天&#xff0c;我们来聊聊一个可能被你忽视&#xff0c;而且非常强大的标准 JavaScript API - AbortController 。 在过去&#xff0c;大家在提到 AbortController 的时候&#xff0c;一般会举请求中断的例子&#xff0c;就连 MDN 给到的…

重学SpringBoot3-集成Redis(三)之注解缓存策略设置

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;三&#xff09;之注解缓存策略设置 1. 引入 Redis 依赖2. 配置 RedisCacheManager 及自定义过期策略2.1 示例代码&#xff1a;自定…

重塑能源持续亏损近22亿:今年前五个月销量下滑,产能利用率骤降

《港湾商业观察》黄懿 9月2日&#xff0c;上海重塑能源集团股份有限公司&#xff08;下称“重塑能源”&#xff09;向港交所提交上市申请书&#xff0c;委任中国国际金融香港证券有限公司、招银国际融资有限公司及法国巴黎证券&#xff08;亚洲&#xff09;有限公司为整体协调…

Linux(不同版本系统包含Ubuntu)下安装mongodb详细教程

一、下载MongoDB 在MongoDB官网下载对应的MongoDB版本&#xff0c;可以点击以下链接快速跳转到下载页面&#xff1a; mongodb官网下载地址 注意选择和自己操作系统一致的platform,可以先查看自己的操作系统 查看操作系统详情 命令&#xff1a; uname -a 如图&#xff1a;操…

海洋大地测量基准与水下导航系列之二国外海底大地测量基准和海底观测网络发展现状(下)

2004年&#xff0c;英国、德国、法国等国家在欧洲“全球环境与安全监测’(Global Monitoring for Environment and Security,GMES)观测计划倡导下制定了“欧洲海底观测网络”(European Seafoor Observatory Network,ESONET)计划。ESONET是一个多学科的欧洲卓越网络(NoE &#x…

光路科技以技术创新为驱动,打造创新型企业新标杆

近日&#xff0c;深圳市光路在线科技有限公司&#xff08;光路科技&#xff09;凭借其出色的创新能力和市场表现&#xff0c;荣获深圳市中小企业服务局颁发的“创新型中小企业”称号。这一荣誉标志着光路科技在推动行业发展和技术进步方面取得了显著成就。 光路科技自2008年成立…

【含文档】基于Springboot+Android的在线招聘平台(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

◇【code】PPO: Proximal Policy Optimization

整理的代码库&#xff1a;https://github.com/Gaoshu-root/Code-related-courses/tree/main/RL2024/PPO OpenAI 文档 —— PPO-Clip OpenAI 文档 界面链接 PPO&#xff1a; on-policy 算法、适用于 离散 或 连续动作空间。可能局部最优 PPO 的动机与 TRPO 一样&#xff1a;…

Scott Brinker:企业正在更换更多的Martech,专注集成和API,不断扩大技术栈

营销技术替代因素&#xff1a;集成和API排在第二位 MarTech.org组织了2024年Martech替代调查&#xff0c;它能够深入了解营销技术栈是如何演变的。在496名受访者中&#xff0c;有65%的人表示他们在过去一年中更换了他们技术栈中的一个或多个营销技术解决方案。这些是最常被替代…

Tableau|三 数据连接与管理

一 Tableau的数据架构 数据连接层&#xff08;Connection&#xff09;、数据模型层&#xff08;DataModel&#xff09;和数据可视化层&#xff08;VizQL&#xff09;。 1.数据连接层 决定了如何访问源数据和获取哪些数据。 数据连接层的数据连接信息包括数据库、数据表、数据视…

华为大咖说 | 新时代,智能电动车车联网有哪些发展趋势?(下篇)

本文作者&#xff1a;朱行健&#xff08;华为专家&#xff09;全文约4252字&#xff0c;阅读约需9分钟 近年来&#xff0c;汽车产业逐步向电动化、自动化、网联化、共享化发展&#xff0c;车联网开始成为新的竞争主体&#xff0c;汽车市场开始出现新的市场发展驱动力、形成新的…

E36.C语言模拟试卷1第一大题选题解析与提示(未完)

点我去下载C语言模拟试卷1的文件 备注:ZIP文件中的参考答案仅仅提供最终结果 目录 第3题 第5题 第7题 第9题 第14题 第16题 第19题 第20题 第22题 第24题 第26题 第27题 第28题 第3题 3.若有说明语句&#xff1a;char c ‘\64’ ; 则变量C包含&#xff1a; …

python19_加减乘除(二)

加减乘除 a hello b world c 2 d 4# 字符串加法 def str_add(A, B):result A Breturn result# 字符串乘法 def str_mul(A, B):result A * Breturn result# 字符串除法 def str_div(A, B):result B / Areturn result# 字符串减法 def str_sub(A, B):result B - Aretur…

A股牛市来袭,资本涌动:加密市场的出路与机遇

近期&#xff0c;随着A股的强劲反弹&#xff0c;不少加密市场的投资者&#xff0c;尤其是一些KOL&#xff08;关键意见领袖&#xff09;&#xff0c;开始转移资金并公开建议进军A股。这种趋势反映出部分投资者对加密市场的信心动摇&#xff0c;尤其是在全球宏观经济不确定性加剧…

python兴农购物网站系统—计算机毕业设计源码38256

摘 要 助农工作是当前我国全面建成小康社会的重点工作&#xff0c;由于我国农村地域广大&#xff0c;贫困人口多&#xff0c;区域差异大&#xff0c;因此&#xff0c;不同区域的扶贫方法也是不一样的。近年来&#xff0c;随着网络的普及。许多农村地区物产丰富&#xff0c;但由…