当前位置: 首页 > news >正文

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

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; // 二进制表示为 101unsigned int s = 7; // 二进制表示为 111unsigned int result = s & ~x; // 111 & ~101 = 111 & 010 = 010int count = __builtin_popcount(result); // 010 中有 1 个 1std::cout << "Result: " << std::bitset<8>(result) << ", Count: " << count << std::endl;return 0;
}
输出
Result: 00000010, Count: 1

相关文章:

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

xay loves or 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行思路 题目要求我们计算有多少个正整数 yy 满足条件 x \text{ OR } y sx OR ys。这里的“OR”是指按位或运算。为了理解这个问题&#xff0c;我们需要考虑按位或运算的性质。 对于任意两个位 a_iai​ 和 b_…...

Docker学习和部署ry项目

文章目录 停止Docker重启设置开机自启执行docker ps命令&#xff0c;如果不报错&#xff0c;说明安装启动成功2.然后查看数据卷结果3.查看数据卷详情结果4.查看/var/lib/docker/volumes/html/_data目录可以看到与nginx的html目录内容一样&#xff0c;结果如下&#xff1a;5.进入…...

Linux中设置cd命令后直接显示当前目录下的所有文件

Linux中cd命令后默认是不显示该目录下的文件的&#xff0c;略微不方便。换个环境经常遇到需要重新设置的情况&#xff0c;网上已有很多发帖了&#xff0c;这里主要汇总下比较简单且常见的bash与csh下的设置方法。 实现的本质就是将"cd" 与 "ls"组合起来&am…...

【RTCP】报文学习笔记

在学习中,发现每一篇都只能窥探其中一部分内容。因此学习了多个大神的文章,记录如下: 参考希望_睿智 大神的文章:从零开始精通RTSP之深入理解RTCP协议, 大神对于细节表述非常到位。 read_book/RTP_RTCP /RTP_RTCP协议内容–精选自译.md 大神提供了更多更为详细的信息。 ZL…...

Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)

本合约非常适合新手学习&#xff0c;其包含了基本的增删改查功能以及各个方式的不同之处的总结&#xff0c;本套合约我也编写了truffle测试&#xff0c;学习truffle测试的小伙伴也有福了~ 该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性&#…...

对android binder的一些疑问及解答

1上层做了那么多封装是否是过度了&#xff0c;难度增加就在于上层的一层层的封装。 最底层直接ioctl和binder驱动交互&#xff08;单纯c语言实现binder交互&#xff09; 第一层&#xff1a;IPCThreadState.transatct封装了对驱动的请求和接受 第二层封装用IBinder.h里面…...

主流麦克风阵列有哪些?

麦克风阵列在HiFi音频方案中是非常重要的一种方案。它的重要性主要体现在音质提升、环境适应性、噪声处理和空间感创造等方面。以下是它的核心作用&#xff1a; 1. 高精度的声音捕捉 在HiFi音频解决方案中&#xff0c;清晰而高保真的声音捕捉是至关重要的。麦克风阵列可以通过…...

几个快速压缩图片大小的方法!

几个快速压缩图片大小的方法&#xff01;在当今这个视觉主导的时代&#xff0c;图片已成为我们日常生活中不可或缺的一部分&#xff0c;它们承载着从壮丽风景到办公文档的各类信息&#xff0c;每个人的电子设备中&#xff0c;往往都保存着海量的图片文件&#xff0c;然而&#…...

怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)

通过修改kubelet的配置&#xff0c;限制每个pod能用的pid数量即可解决此问题。 kubelet 可以通过设置PodPidsLimit参数来限制每个容器内的进程数量。 1.【kubelet节点】 /var/lib/kubelet/config.yaml文件中添加如下的内容 # 500仅仅是举例 podPidsLimit: 5002.【kubelet节点…...

MySQL中的嵌套查询

1. 嵌套查询的定义 嵌套查询指在一个查询语句的某个部分嵌入一个子查询。 嵌套查询的执行过程遵循“先子查询、后外层查询”的逻辑。首先&#xff0c;子查询执行并返回一个结果集&#xff0c;可能是一个值、一行或多行数据。接着&#xff0c;外层查询使用子查询的结果继续对数…...

win10 提示pl2303hxa已停产,请联系供货商解决方案

1. 下载驱动 需要下载老版的驱动&#xff0c;下载地址&#xff1a;https://www.pcsoft.com.cn/soft/211569.html 选择普通下载 或者从CSDN下载&#xff1a; 2. 安装驱动 下载完成后安装下载好的驱动文件&#xff0c;安装后更新pl2303的驱动&#xff0c;如下&#xff1a;…...

浙大数据结构:07-图5 Saving James Bond - Hard Version

这道题也是很有难度&#xff0c;我最开始尝试用Dijkstra来做&#xff0c;发现不是很好处理&#xff0c;用bfs还不错。 机翻&#xff1a; 1、条件准备 n为鳄鱼数量&#xff0c;jump为跳跃距离&#xff0c;headjump为第一次跳跃距离&#xff0c;包括了岛的半径。 isalive标识…...

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69

脉冲同步器&#xff08;快到慢&#xff09; 描述 sig_a 是 clka&#xff08;300M&#xff09;时钟域的一个单时钟脉冲信号&#xff08;高电平持续一个时钟clka周期&#xff09;&#xff0c;请设计脉冲同步电路&#xff0c;将sig_a信号同步到时钟域 clkb&#xff08;100M&…...

电商商品数据采集||高并发||多语言请求实例演示|京东|淘宝商品详情数据SKU价格

以京东商品数据采集为例 京东商品详情接口数据采集是指通过调用京东提供的商品详情API接口&#xff0c;获取商品的详细信息。以下是一个简单的步骤来实现这个功能&#xff1a; 1. 注册京东开发者账号 首先&#xff0c;你需要注册一个京东开发者账号&#xff0c;并创建一个应…...

云手机哪款好用?2024年云手机推荐对比指南

随着云手机市场的快速扩展&#xff0c;消费者在选择云手机时面临着众多选择。为了帮助大家找到最适合自己的云手机&#xff0c;小编特意整理了一份当前市场上几款备受关注的云手机品牌对比&#xff0c;大家一起往下看吧。 1. Ogphone云手机 Ogphone云手机是近年来海外业务版块迅…...

无人机航测内业常用建模软件手册下载(上)

航测项目外业离不开无人机&#xff0c;内业离不开制图软件。 无人机航测外业作业包括控点布设、航线规划、仿地飞行、航拍等流程&#xff0c;而内业数据处理则常涉及到CC、Pix4D、PhotoScan、大疆智图、重建大师、M3D、瞰景Smart3D、天工等软件。 我们整理了这些常用建模软件…...

Python Django ORM 的工作原理

在 Web 开发中&#xff0c;处理数据库是非常常见的需求&#xff0c;尤其是在构建动态应用程序时。Django 作为一个流行的 Python Web 框架&#xff0c;提供了一套强大的工具帮助开发者轻松管理数据库。Django 的 ORM&#xff08;对象关系映射&#xff0c;Object-Relational Map…...

GoLang编程常用规范/工具

代码格式化工具 代码风格&#xff1a; go install github.com/fsgo/go_fmt/cmd/gorgeouslatest gorgeous # 仅格式化git有改动的文件。如需格式化所有文件&#xff0c;可以执行 gorgeous ./...标签格式&#xff1a;https://github.com/4meepo/tagalign go install github.c…...

数字王国里的虚拟人――技术、商业与法律解读

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【海拥导航】&#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/HDQZJEQiCJb9cFi&#x1f485; 想寻找共同学习交流&#xff0c;摸鱼划水的小伙伴&#xff0c;请点击【全栈技…...

Java后端基础练习|请求参数

请求参数&#xff0c;可以通过四种方式传递到后端 请求路径查询参数请求体请求头 controller代码 package com.urfread.breaknews.core.controller;import com.urfread.breaknews.core.common.model.ResultData; import lombok.Data; import org.springframework.web.bind.a…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

验证redis数据结构

一、功能验证 1.验证redis的数据结构&#xff08;如字符串、列表、哈希、集合、有序集合等&#xff09;是否按照预期工作。 2、常见的数据结构验证方法&#xff1a; ①字符串&#xff08;string&#xff09; 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面&#xff0c;我们会实现这个普通的工厂方法&#xff0c;并且对比这个普通工厂方法和我们直接创建对象的差别在哪里&#xff0c;为什么需要一个工厂&#xff1a; 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类&#xff1a; 两个发…...