题目描述实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,则输出为2 常规解法首先把n和1做位运算,判断n的最低位是不是1,然后把1左移一位得到2,再把n和2做位运算,判断n的次低位是不是1…这样反复左移。循环的次数等于整数二进制的位数,32位的整数需要循环 ...
分类:
编程语言 时间:
2019-06-30 14:13:55
阅读次数:
84
回文数 题目描述 我们把从左往右和从右往左念起来相同的数字叫做回文数。例如,75457就是一个回文数。当然某个数用某个进制表示不是回文数,但是用别的进制表示可能就是回文数。例如,17是用十进制表示的数,显然它不是一个回文数,但是将17用二进制表示出来是10001,显然在二进制下它是一个回文数。现在给 ...
分类:
其他好文 时间:
2019-06-29 19:27:42
阅读次数:
116
求两个数的二进制位不同的位置,最先想到的就是 异或操作 , 异或:按位运算,相同为0,不同为1。 比如: a = 6 对应的二进制表示为: 0 0 1 1 1 ? b = 9 对应的二进制表示为: 0 1 0 0 1 则 a ^ b = 14 对应的二进制表示为: 0 1 1 1 0 所以,只要算出 ...
分类:
其他好文 时间:
2019-06-28 01:11:28
阅读次数:
111
题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_e 题目大意 给定一个二进制表示的数 L,问有多少对自然数 (a, b) 满足 $a + b \leq L 且 a + b = a \oplus b $。 分析 由于异或是无进位相加,所以 $a ...
分类:
其他好文 时间:
2019-06-26 19:15:08
阅读次数:
191
题意:一个只含字母C和P的环形串 求长度为n且每m个连续字符不含有超过k个C的方案数 m <= 5 n <= 1e15 题解:用一个m位二进制表示状态 转移很好想 但是这个题是用矩阵快速幂加速dp的 因为每一位的转移都是一样的 用一个矩阵表示状态i能否转移到状态j 然后跑一遍 初试模板题 #incl ...
分类:
其他好文 时间:
2019-06-25 10:08:30
阅读次数:
86
以10进制表示打印一个十六进制数 十六进制的81输出为10进制的-127,原因如下: 变量 a = 0x81,其值81是以补码形式表示的,也就是二进制的 1000 0001,而输出的-127是原码的表示,二进制表示为 ?1111 1111?,中间过程如下: 1、根据原码求补码(负数): 1)最高位符 ...
分类:
其他好文 时间:
2019-06-23 19:07:44
阅读次数:
102
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 1 /* 2 * 题目描述 3 * 输入一个整数,输出该数二进制表示中1的个数。 4 * 其中负数用补码表示。 5 */ 6 7 public class Main11 { 8 public static void main ...
分类:
其他好文 时间:
2019-06-20 22:33:21
阅读次数:
143
注意: 整数包括负数,别忘了负数! 2的幂肯定是大于等于1的,所以,负数全部false!! 方法1: 2的幂说明用二进制表示的时候,只有一个1。 方法二: 利用与操作,若一个数n是2的幂次方,则2进制表达式一定为某一位为1,其余为0。则n-1则会变成后面的数全部变成1,原来1的位置变成0 例子:n= ...
分类:
其他好文 时间:
2019-06-19 13:36:44
阅读次数:
107
快速幂代码如下: 以3的11次方为例。 则a=3,b=11 将11用二进制表示,11(2)=1011,可以将11拆解为20+21+23 3的11次方可以表示为3^(20+21+23) 3的三次方拆解为3^(20)·3^(21)·3^(23) 用位运算&1得出3末尾的二进制数,>>=1右移一位,逐个取 ...
分类:
其他好文 时间:
2019-06-16 20:14:41
阅读次数:
98
Given an integer, write a function to determine if it is a power of two. Example 1: Example 2: Example 3: 题目大意: 判断一个整数是否为2的幂次方。 理 解: 2的幂 的二进制表示中只有一位是1 ...
分类:
其他好文 时间:
2019-06-14 12:38:33
阅读次数:
96