计算星期几

作者: , 共 252 字 , 共阅读 0

一个短小、高效的 C++函数,用来判断指定日期是星期几:

int day_of_week(int y, int m, int d)    /* 0 = Sunday */
{
    static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
    y -= m < 3;
    return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

注意, 0 表示星期日, 1-6 表示星期一到星期六。

Q. E. D.

类似文章:
编程 » C++, 代码片段
主要函数是timespec_get,可参考https://zh.cppreference.com/w/c/chrono/timespec_get
获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
递归算法的复杂度通常很难衡量,一般都认为是每次递归分支数的递归深度次方。但通常情况下没有这个大,如果我们可以保存每次子递归的结果的话,递归算法的复杂性等于不同的节点个数。这也是动态规划算法思想的由来。
编程 » C++,
C++的多行宏有标准定义方式,boostfolly库都采用了这种方式:
编程 » C++
假设在 C++里有一个数据结构:
编程 » 算法, 算法分析
下面这个求$ 1/\sqrt{x}$ 的函数号称比直接调用 sqrt 库函数快 4 倍,来自游戏 Quake III 的源代码。
编程 » C++
有两种方法,一种在线程的调用函数内部设置,还有一种是在外部对指定线程变量做设置。
相似度: 0.052
编程 » C++
C++的浮点数转整数有四种方法,直接类型转换、round、floor、ceil。其效果如下表:
注: 这个问题来自China Theory Week 2008的 Open Problems Session。
编程 » C++, C++11
花括号初始化是C++11引入的一种初始化方法。
boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.85.0http://boost.org/上可以查看最新版本号,将下面的 59 换成最新的即可)。