计算C ++中长度为N且仅包含0和1的二进制字符串的数量
我们给定一个数字,即num,任务是计算可以通过给定数字num形成的二进制字符串的计数,该数字仅包含0和1。
二进制数字系统是数字表示技术的一种。它是最流行的,并用于数字系统。二进制系统用于表示二进制量,二进制量可以由仅具有两个操作状态或可能条件的任何设备表示。例如,一个开关只有两种状态:打开或关闭。
在二进制中,只有两个符号或可能的数字值,即0和1。由只有两种工作状态或可能条件的任何设备表示。二进制字符串是那些包含二进制值的字符串,即0或1
例如
Input − num = 3Output − 计数是 8
说明-长度为3的二进制组合是:000,111,001101,100,110,011,010因为它们在数字上总共是8,所以计数是8。
Input − num = 2Output − 计数是 4
说明-长度为2的二进制组合是:00,11,01,10因为它们的总数是4,所以计数是4。
以下程序中使用的方法如下
输入一个long类型的数字,只要该数字可以是任意长的数字
将 mod 值计算为(long long)(le9 + 7)
创建一个函数来计算计数
声明一个临时变量,该变量将存储计数和另一个变量temp,并使用2对其进行初始化。
将num设置为temp = temp%mod
当num> 0时开始循环
检查IF num&1,然后将count设置为(count * temp)%mod
设置num = num >> 1
设置温度=(temp*temp)%mod
返回计数
打印结果。
示例
#include <iostream>using namespace std;
#define ll long long
#define mod (ll)(1e9 + 7)
//在O(log y)中找到(x ^ y)%p的迭代函数
ll power(ll x, ll y, ll p){
ll result = 1;
x = x % p; // Update x if it is more than or
//等于p-
while (y > 0){
//如果y为奇数,则将x乘以结果
if (y & 1){
result = (result * x) % p;
}
//y即使现在也必须
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return result;
}
//计算二进制字符串数的函数
ll countbstring(ll num){
int count = power(2, num, mod);
return count;
}
int main(){
ll num = 3;
cout <<"计数是: "<<countbstring(num);
return 0;
}
输出结果
如果运行上面的代码,我们将获得以下输出-
计数是: 8
以上是 计算C ++中长度为N且仅包含0和1的二进制字符串的数量 的全部内容, 来源链接: utcz.com/z/315930.html