C++ 中计算连续零对的数量
我们有一个从 1 开始的序列生成器。在每一步中,0 变成 10,1 变成 01。因此,在连续的步骤中将发生以下变化:
步骤 1 − 01
步骤 2 − 1001
步骤 3 − 01101001 ……
目标是找到给定步数的连续 0 对的数量。
如果输入步数为 1,则 0 对的数量为 0;如果输入步数为 2,则 0 对的数量为 1;如果输入步数为 3,则 0 对的数量为 1。
步骤 4 − 1001011001101001
步骤 5 − 01101001100101101001011001101001
我们可以观察到,序列以 2 的幂递增,并且在长度为 12 之后重复自身,并且每 12 个字符重复一次。因此,这些长度为 12 的序列有 2 对连续的 0。
对于步骤 S,长度为 12 的模式的数量为 2S /12
连续 2 模式数量 = 1(初始)+ 2 X S(对于其余长度为 12 的重复)
让我们通过例子来理解。
输入 − 步数 = 5
输出 − 连续零对的数量为 − 5
解释 − 如上所示,第 5 步的序列为 −
Step 5: 01101001100101101001011001101001 Number of pairs of 0’s is 5. Also with formula : tmp=25 /12= 32/12 = 2, pairs=1+ 2 x 2 = 5
输入 − 步数 = 10
输出 − 连续零对的数量为 − 171
解释 − 使用公式 − tmp=210/12= 1024/12 = 85,pairs=1+ 2 x 85 = 171
下面程序中使用的方法如下
我们将步数作为输入,并检查步数是否等于 1,如果是,则连续 0 对的数量为 0。如果步数等于 2 或 3,则此类对的数量为 1。
否则,使用公式 tmp=2input/12 和 pairs=1+2*tmp 计算。
将一个变量 decimal 作为步数的输入。
函数 Zero_pairs(int decimal) 获取 decimal 并返回该步的连续零对的数量。
将初始计数设置为 0。
如果 decimal<=1,则返回 0。
如果 decimal==2 或 decimal==3。则返回 1。
否则,计算 temp=(pow(2,decimal))/12 并计算 count 为 2*temp + 1。
返回 count 作为结果。
示例
#include<bits/stdc++.h>
using namespace std;
int Zero_pairs(int decimal){
int count = 0;
if(decimal <=1){
count = 0;
}
else if(decimal == 2 || decimal == 3){
count = 1;
}
else{
int temp = (pow(2, decimal) / 12);
count = 2 * temp + 1;
}
return count;
}
int main(){
int decimal = 7;
cout<<"Count of Pairs Of Consecutive Zeros are: "<<Zero_pairs(decimal);
return 0;
}输出
如果我们运行以上代码,它将生成以下输出:
Count of Pairs Of Consecutive Zeros are: 21
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP