当前位置: 首页 > 编程笔记 >

计算C ++中前一半和后一半相同位的偶数长度二进制序列

黄朗
2023-03-14
本文向大家介绍计算C ++中前一半和后一半相同位的偶数长度二进制序列,包括了计算C ++中前一半和后一半相同位的偶数长度二进制序列的使用技巧和注意事项,需要的朋友参考一下

我们给了几个比特n作为二进制序列的输入。此处的目标是找到长度为2n的二进制序列,以使其前半部分和后半部分的总和相等。前n位和后n位具有相同的和。

我们有一个二进制序列,因此将数字放在任何位置的唯一选择是0和1。对于前半部分和后半部分的n位,否。可能的组合是-

n位全零(0 1)nC0 = 1

n位和1 1的nC1

n位与2 1的nC2

具有n 1的nCn的n位

对于2n位

  • 上半部分为0 1,下半部分为0 1 nC0 X nC0

  • 上半部分为1 1,下半部分为1 1 nC1 X nC1

  • 前一半为2 1,后一半为2 1 nC2 X nC2

  • ..............

  • 前一半为n 1,后一半为n 1 nCn X nCn

这样的组合总数= nC0 * nC0 + nC1 * nC1 + ....... + nCn * nCn

=(nC0)2+(nC1)2 + .......... +(nCn)2

输入值

n=1

输出结果

Sequences with same sum of first and second half bits: 2

说明-可能的2 * 1 = 2位序列00,01,10,11这四个01和10中的总和为= 1

输入值

n=2

输出结果

Sequences with same sum of first and second half bits: 6

说明-可能的2 * 2 = 4位序列0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111

在这些序列中,前2位和后2位的总和相同-

0000,0101,0110,1001,1010,1111,总计= 6

以下程序中使用的方法如下

  • 整数“位”存储数字。

  • 函数findSeq(int n)将n作为输入,并返回具有等于或大于前一半和后一半2n位的序列数。

  • 变量nCi用于存储初始值= 1,因为nC0为1。

  • 初始化ans = 0,它将把这样的序列计为nCi * nCi之和。

  • 从i = 0到n开始将nCi * nCi添加到ans,按上述公式计算每个nCi。

  • 在for循环结束后,返回以“ ans”表示的结果作为计数。

示例

#include<iostream>
using namespace std;
//返回偶数长度序列的计数
int findSeq(int n){
   int nCi=1; //nC0=1
   int ans = 1;
   for (int i = 1; i<=n ; i++){
      //nCi =(nCi-1)*(nCi / nCi-1)
      //nCi / nC(i-1)=(n + 1-i)/ i; 
      nCi = (nCi * (n+1-i))/i;
      ans += nCi*nCi;
   }
   return ans;
}
int main(){
   int bits = 2;
   cout << "Count of binary sequences such that sum of first and second half bits is
   same: "<<findSeq(bits);
   return 0;
}

输出结果

Count of binary sequences such that sum of first and second half bits is same: 6
 类似资料:
  • 本文向大家介绍在C ++中计算整数中的偶数和奇数位,包括了在C ++中计算整数中的偶数和奇数位的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数,任务是计算一个数字中的偶数和奇数。另外,我们将继续检查整数中的偶数是否出现偶数次,并且整数中的奇数位是否出现奇数次。 例如 说明-是的,此外,偶数出现偶数次,即2,奇数位出现奇数次,即3 说明-:否,因为偶数出现的次数是奇数,即3,而奇数出现的次数

  • 我将以下代码与java BigDecimal setScale方法结合使用,并使用半\u偶数舍入模式,得到以下结果。 结果:1.11 预计:1.12 由于距离5最近的偶数数字应该是2,因此我预期的结果是1.12。但结果是1.11。再一次, 结果:1.15 预期:1.14 因为5左边的偶数是4,所以我希望结果是1.14。对此有什么解释吗?

  • 最近我一直在研究自动布局,我被一个看似微不足道的问题所困扰。我有一个想法,我想坐在屏幕的顶部,占据屏幕高度的一半。自动布局之前简单-只需将其固定到位,并告诉它在superview调整大小时垂直展开即可。 现在,我一辈子都不知道该怎么做。以下是我尝试设置时得到的结果: 底部空间约束设置为“等于284”,当我切换到iPhone4布局时,这对我来说绝对没有用,因为它在屏幕底部保留了284个点的空间,并将

  • 通常,四舍五入到小数点后2位是非常容易的 但是,舍入系统通常会舍入到最近的偶数。例如, 我想实现的是 所以,我在问如何做与上面相同的事情,在正数上有2个小数点位,而不是整数,以实现我前面所说的打印。

  • 给定 n,求 m 使得 m 是大于 n 的最小半素数。 下一个素数相当简单,而半素数则不那么简单。需要明确的是,只需要半素数,尽管同时获得因子会很方便。 我想到了一些方法,但我相信有更好的方法。 假设算术运算为O(1)。我使用了埃拉托斯特尼筛,它是O(n log log n),我知道阿特金筛,但我喜欢我的半优化埃拉托斯特尼。 从n开始计数,当你找到一个半素数时停止。 这看起来很愚蠢,但如果有一个O

  • 问题内容: 有一个,我想将其元素的前半部分复制到另一个中。(如果al具有奇数个元素,应该再增加一个元素。)但是,以下代码抛出,并说,尽管我不确定这会是什么问题,因为ArrayLists的索引从0开始。另外,我知道,但是我想通过for循环这样做。 问题答案: 您应该使用而不是: 最好使用List#subList