- 博客(6)
- 收藏
- 关注
原创 C/C++宏替换详解
文章目录1. 基本形式2. 宏展开中的陷阱3. `#undef`4. 宏参数、`#` 和 `##`1. 基本形式#define name replacement_text 通常情况下,#define 指令占一行,替换文本是 define 指令行尾部的所有剩余部分,但也可以把一个较长的宏定义分成若干行,这时需要在待续的行末尾加上一个反斜杠符 ``。宏定义也可以带参数,这样可以对不同的宏调用使用不同的替换文本。例:#define max(A, B) ((A) > (B) ? (A) : (B)
2020-11-18 21:18:49
1153
原创 常用排列组合公式
1. 排列公式nnn 个相异物件取 rrr(1≤r≤n1 \leq r \leq n1≤r≤n)个的不同排列总数,为Prn=n(n−1)(n−2)⋯(n−r+1)P_r^n = n(n-1)(n-2)\cdots(n-r+1)Prn=n(n−1)(n−2)⋯(n−r+1)特别地,若 n=rn=rn=r,得Prr=r(r−1)⋯1=r!P_r^r = r(r-1)\cdots 1 = r!Prr=r(r−1)⋯1=r!人们常约定把 0!0!0! 作为 111。当 rrr 不是非负整数时,
2020-08-13 17:11:32
7233
1
原创 实现 sqrt(x):二分查找法和牛顿法
最近忙里偷闲,每天刷一道 LeetCode 的简单题保持手感,发现简单题虽然很容易 AC,但若去了解其所有的解法,也可学习到不少新的知识点,扩展知识的广度。创作本文的思路来源于:LeetCode Problem 69. x 的平方根简述题目大意(不想跳转链接,可以看这里):给定一个非负整数 x,要求计算并返回 x 的平方根(取整)。例如,输入 4,则输出 2;输入 8,则输出 2(8 的平方根...
2019-11-15 18:03:58
352
原创 蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数
0. 本文的初衷及蔡勒公式的用处前一段时间,我在准备北邮计算机考研复试的时候,做了几道与日期计算相关的题目,在这个过程中我接触到了蔡勒公式。先简单的介绍一下蔡勒公式是干什么用的。我们有时候会遇到这样的问题:看到一个日期想知道这一天是星期几,甚至看到一个历史日期或纪念日,我们想快速的知道这一天是星期几。对于这个问题,如果用编程的方式,应该怎么实现呢?你可能已经有思路了,比如你知道某个日期是星期几...
2019-08-25 14:14:22
623
原创 判断回文数算法
回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数。比如形如 121,1221,13531 的数字都是回文数,但 -121,10,25 等等都不是回文数。如何判断一个数是回文数?这是一个很简单的算法,最常见的实现方式是使用一个栈或其他方法,把数字序列逆序,然后判断逆序后的数字是否等于原先的数字。显然这种实现方式需要至少 n 次循环才能完成判断。本文提供一种更巧妙的方法,利用回文数...
2019-08-25 14:08:26
514
原创 二分求幂算法:快速的求幂计算方式
二分求幂法是快速计算形如 aba^bab 的求幂运算的方法。朴素计算 aba^bab 的方式是将 aaa 连乘 bbb 次,代码如下:int result = 1;for (int i = 0; i != b; i++) result *= a;这需要计算 bbb 次,而实际真的需要运算这么多次吗?答案是不需要,利用二分求幂法,我们可以使运算次数大大小于 bbb 次。那么什么是二分...
2019-08-25 14:06:40
485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人