Simon Fang


What a man can be, he must be

Vim编辑器及其插件的配置

开始体验编辑器之神 Requirements vim git 不熟悉vim命令的新手,可以在终端运行vimtutor快速入门。 若不慎按下了Ctrl+s锁定了终端,可通过Ctrl+q解除锁定。 sudo apt install vim git # Ubuntu/Debian v...

2017秋招算法题——被7整除

题目描述 小萌非常喜欢能被 7 整除的数字,比如 7, 21, 121996,等等。 有一天她得到了 n 个正整数,她想用这些数制造出更多的能被 7 整除的数。于是她从这 n 个数中选出两个数, 然后将一个数写在另一个输的前面,一次得到一个新的数。 按这种方法她一共可以得到 $2\times...

谁养鱼作为宠物?

英国人住在红色的房子里; 瑞典人养狗作为宠物; 丹麦人喝茶; 绿房子紧挨着白房子,在白房子的左边; 绿房子的主人喝咖啡; 抽 Pall Mall 牌香烟的人养鸟; 黄色房子里的人抽 Dunhill 牌香烟; 住在中间那个房子里的人喝牛奶; 挪威人住在...

递归的消除

递归对于分析问题比较有优势,但是基于递归的实现效率可能不高。另外,因为函数栈大小的限制,递归的层次也有限制。 本文给出一种通用的消除递归的步骤,这样可以在分析阶段采用递归思想得到算法,而在实现阶段可采用非递归算法。 请读者注意,对于结构化的高级语言,由于不能使用goto,本文的方法优化的非递...

错排数(二)

上回介绍了错排数的简记式: \[!n = \left[\frac{n!}{\mathrm{e}}\right]\] 根据上式,求得\(!n\)的时间复杂度是O(n),但是涉及到少量浮点运算。 由于浮点数运算本质上可以归结为整数的运算, 因此一定存在一个运行在整数域,时间复杂度不超过O(n)...

错排数(一)

错排 (derangement) 是组合数学中的问题之一。 若n为大于1的自然数,考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上, 那么这样的排列就称为原排列的一个错排。n个元素的错排数记为\(D_n\) 或\(!n\)。 对$\forall n\ge 2$ ,有 \...

Prime

source code #include <string.h> #include <list> class Prime { char *_notprime; int *_seq; int _total_prime; int _range; publ...

next combination

source code #include <vector> #include <iostream> using namespace std; // generate next combination via index // pick k number from ...