计算数组中元素的个数,其二进制表示中的1的个数是K的倍数
设置位是0和1的二进制表示形式。这个数字1被称为计算机中的设置位。让我们举一个例子来理解设置位的计算 -
让我们举一个例子来理解setbit计算 -
整数96的设置位计算为

假设我们想将位设置为96的总和。所以根据上面的表示,我们将把位1设置为那些数组元素,它们的总和将为96。这样我们将形成2组位。因此,如果我们将K值设为2,则96的设置位是它的倍数。
在这个程序中,我们将解决数组元素计数问题,其中设置位的个数是K的倍数。
算法
我们将使用一个名为‘bits/stdc++.h’的头文件来启动程序,该文件包含了C++的所有标准模板库。
-
我们正在创建一个名为‘find_bitcount’的函数定义,它接受三个参数,即arr、n和k,并定义如下−
arr[] − 从数组的主函数中获取数组输入。
n − 数组的长度
k - 检查与设置的位计数的可整除性。
这将计算数组元素中设置位的总数。
然后我们将‘0’存储到‘ans’变量中,该变量将跟踪满足条件的数字的计数。
我们开始for循环来迭代每个元素,并将数组元素即‘arr[i]’存储到变量‘x’中,该变量在后面的while循环中满足条件以检查总位设置计数的条件。这样函数将‘x’初始化为数组元素的值。
然后将变量‘setBitsCount’初始化为‘0’,它将跟踪当前数组元素的置位位数。
接下来,我们创建一个while循环来检查x(存储在x中的数组元素)是否大于0,并执行以下操作:
setBitsCount += x & 1 − 使用循环中的按位与运算符和1来确定x的最低有效位是否为1。
x = x >> 1 − 如果结果为1,则将设置位数增加1。然后在循环中使用 >> 运算符将 x 向右移动1位,以消除最低有效位。
现在使用if语句检查‘setBitsCount’是否能被‘k’整除,使用‘%’运算符,并且等于‘0’,那么当前数组元素满足条件,通过‘1’递增变量‘ans’。
在处理完上述所有条件后,该函数返回‘ans’的值,该值定义了数组元素的总设置位数。
继续前进,开始主要函数并声明所有的数组元素。然后我们初始化变量‘n’来找到数组的大小,并初始化变量‘K’为‘2’,它将检查数组元素是否是K的倍数。
最后,在打印语句中,我们调用了名为‘find_bitcount()’的函数定义,并获得了结果。
示例
在这个程序中,我们将实现对一个数组元素的计数,该数组元素的设置位是 K 的倍数。
#include <bits/stdc++.h> #include <bits/stdc++.h> using namespace std; // Function to find the count of numbers int find_bitcount(int arr[], int n, int k) { int ans = 0; for (int i = 0; i < n; i++) { int x = arr[i]; int setBitsCount = 0; // Calculate the set-bits count of the element x while (x > 0) { setBitsCount += x & 1; x = x >> 1; } // Check if the setbits count // is divisible by K if (setBitsCount % k == 0) ans++; } return ans; } int main() { int arr[] = { 6, 845, 4, 168, 7896 }; int n = sizeof(arr) / sizeof(arr[0]); int K = 2; cout << "There are "<<find_bitcount(arr, n, K)<<" array element whose setbits are in a multiple of K"; return 0; }
输出
There are 3 array element whose setbits are in a multiple of K
结论
我们探讨了一个数组元素计数的概念,其设置位数是K的倍数。在这个程序中,通过定义函数来计算设置位数数组元素的总计数。然后,我们观察设置位数如何通过>>运算符进行移位,并使用条件语句来检查有多少个数组元素传递给设置位数。最后,我们简单地打印结果。
以上是计算数组中元素的个数,其二进制表示中的1的个数是K的倍数的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C语言数据结构:树和图的数据表示与操作树是一个层次结构的数据结构由节点组成,每个节点包含一个数据元素和指向其子节点的指针二叉树是一种特殊类型的树,其中每个节点最多有两个子节点数据表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作创建树遍历树(先序、中序、后序)搜索树插入节点删除节点图是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起边可以是带权或无权的数据表示邻

文件操作难题的真相:文件打开失败:权限不足、路径错误、文件被占用。数据写入失败:缓冲区已满、文件不可写、磁盘空间不足。其他常见问题:文件遍历缓慢、文本文件编码不正确、二进制文件读取错误。

文章讨论了在C中有效使用RVALUE参考,以进行移动语义,完美的转发和资源管理,重点介绍最佳实践和性能改进。(159个字符)

C35 的计算本质上是组合数学,代表从 5 个元素中选择 3 个的组合数,其计算公式为 C53 = 5! / (3! * 2!),可通过循环避免直接计算阶乘以提高效率和避免溢出。另外,理解组合的本质和掌握高效的计算方法对于解决概率统计、密码学、算法设计等领域的许多问题至关重要。

本文讨论了使用C中的移动语义来通过避免不必要的复制来提高性能。它涵盖了使用std :: Move的实施移动构造函数和任务运算符,并确定了关键方案和陷阱以有效

C语言函数是代码模块化和程序搭建的基础。它们由声明(函数头)和定义(函数体)组成。C语言默认使用值传递参数,但也可使用地址传递修改外部变量。函数可以有返回值或无返回值,返回值类型必须与声明一致。函数命名应清晰易懂,使用驼峰或下划线命名法。遵循单一职责原则,保持函数简洁性,以提高可维护性和可读性。

C语言函数名定义包括:返回值类型、函数名、参数列表和函数体。函数名应清晰、简洁、统一风格,避免与关键字冲突。函数名具有作用域,可在声明后使用。函数指针允许将函数作为参数传递或赋值。常见错误包括命名冲突、参数类型不匹配和未声明的函数。性能优化重点在函数设计和实现上,而清晰、易读的代码至关重要。

std::unique 去除容器中的相邻重复元素,并将它们移到末尾,返回指向第一个重复元素的迭代器。std::distance 计算两个迭代器之间的距离,即它们指向的元素个数。这两个函数对于优化代码和提升效率很有用,但也需要注意一些陷阱,例如:std::unique 只处理相邻的重复元素。std::distance 在处理非随机访问迭代器时效率较低。通过掌握这些特性和最佳实践,你可以充分发挥这两个函数的威力。
