题解:
数位DP无疑。注:下面说的位基本都是二进制。
f[i][j]表示前i位数中有j个1的数的数量(包括0哦~)
然后一个低位数后面填0/1分别是两种向高位的转移,这样在O(log^2 n)时间内处理出f
主要是我的姿势(嗯,我叫它数位树):
我是把一个大段像线段树一样分成一个个小段,一旦遇到一个完整的段就可以O(1)计数(这里是logn,因为是记录了有i个1的...
分类:
其他好文 时间:
2015-02-01 13:34:53
阅读次数:
161
题目
1、给定一个整数N,那么阶乘N!末尾有多少个0呢?
2、求N!的二进制表示中最低位1的位置?
先来看怎么计算阶乘,当然可以是循环,也可以是递归,上代码:
public long factorial1(int n) {
long sum = 1;
for (int i = 1; i <= n; i++) {
sum *= i;
}
r...
分类:
其他好文 时间:
2015-01-30 16:00:56
阅读次数:
117
原题链接:https://oj.leetcode.com/problems/powx-n/
1. 首先处理特殊情况,比如0,1,-1
2. 关于普遍情况,考虑x^7 = x^(4 + 2 + 1),注意4,2,1都是2的n次方,所以转化为((x ^ 2) ^ 2) * (x ^ 2) * (x)。更加直观来看,我们可以将指数7看为二进制表示111,每一位从右到左对应的是x ^ 4,x ...
分类:
其他好文 时间:
2015-01-29 17:48:53
阅读次数:
130
题意:
给一个目标数和一个待分割数,可以对待分割数进行任意划分,比如将带分割数12305分为12,30,5,问将分好的数加起来最接近且不超过目标数的分割方案。
分析:
关键是在对带分割数的任意划分,直接for循环枚举状态,比如状态10101(二进制)表示将12305分为1,23,05.
代码:
#include
#include
using namespace std;
int t,...
分类:
其他好文 时间:
2015-01-22 18:17:19
阅读次数:
161
题目链接:点击打开链接
题意:给定n个刻度。下面是n个刻度。
要构造一个尺子使得上面的n个刻度能直接量出来。
且要满足尺子上的刻度线个数最少,最少的情况下尺子最短。
第一个刻度总为0
题目保证总是存在
思路:
bfs,每次枚举新加一个刻度后,哪些可以直接量出来,用二进制表示,然后暴力搜
import java.io.PrintWriter;
import java.util.Arr...
分类:
其他好文 时间:
2015-01-22 11:12:21
阅读次数:
168
求二进制数中1的个数
题目描述:对于一个字节1BYTE = 8 bits的无符号变量,求其二进制表示中1的个数,要求算法的执行效率尽可能高。
题目分析:可以吧这个问题转化为判断这个数的最后1位数是否等于1,然后逐渐往右移位,不断判断下去,直到该数为零。
按照这种分析,那么就有两部分需要做:
1)判断最后一位是否为零;
2)如果右移位。...
分类:
其他好文 时间:
2015-01-22 09:27:17
阅读次数:
155
图上第一行signed char 占了8位,其中一位是符号位。其余7位是数字位,可以存2的7次方个数(0~127共128个数)。十进制-128~-1在存储时用二进制-0000000(0)~-1111111(127)表示十进制0~127在存储时用二进制+0000000(0)~+1111111(127)...
分类:
其他好文 时间:
2015-01-21 13:16:16
阅读次数:
163
题目链接: BZOJ - 3209题目大意设 f(x) 为 x 的二进制表示中 1 的个数。给定 n ,求∏ f(i) (1 #include #include #include #include #include using namespace std;typedef long long LL.....
分类:
其他好文 时间:
2015-01-19 18:48:59
阅读次数:
268
1的个数
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗?
输入第一行输入一个整数N,表示测试数据的组数(1
每组测试数据只有一行,是一个整数M(0=
输出每组测试输出占一行,输出M的二进制表示中1的个数
样例输入
3
4
6
7
...
分类:
其他好文 时间:
2015-01-15 18:18:30
阅读次数:
167
let 十进制表示10 = 10let 二进制表示2 = 0b10let 八进制表示8 = 0o10let 十六进制表示16 = 0x10// 科学计数法:类型推断为double类型let 一百万 = 1e6let 一百万分之一 = 1e-6// 字面量的格式化let 一百万又一百万分之一 = 1_...
分类:
其他好文 时间:
2015-01-13 23:10:48
阅读次数:
184