我们给了几个比特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