摘要: 什么是错排问题? 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法? 写信时将n封信装到n个不同的信封里,有多少种全部装错信封的情况? 错排公式: 拿信封问题举例子: 设 Fn 为n封信都装错的情况 ( 信封编号 与 信的编号 各不对应) 第一步, 手里有一封编号为 A 的 阅读全文
posted @ 2019-03-16 22:22 zz2108828 阅读(859) 评论(0) 推荐(0) 编辑
摘要: 简述 素数筛是数论的门票(签到工具)。 很多数论问题都需要用到素数筛。 本文将从作者自己的角度去阐述怎么写出欧拉线性筛。 素数筛的原理: 必定有一个 不小于所有质因数 ( ≤ ) 的质因数b 与 一个 大于等于所有因数 ( ≥ ) 的因数c ( c ≠ 1) 乘积等于 合数a 本文 最小 是 不小于 阅读全文
posted @ 2019-03-12 20:11 zz2108828 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 因数是什么? 假如 a * b = c (a、b、c都是整数),a和b就是c的因数。 两个正整数相乘,那么这两个数都叫做积的因数。 例如: 6的因数是1,2,3,6 因数个数算法: 即任何一个大于1 的整数 n 都可以分解: n = pow(p1,a1) * pow(p2,a2) * pow(p3, 阅读全文
posted @ 2019-03-11 21:26 zz2108828 阅读(1560) 评论(0) 推荐(0) 编辑
摘要: 八皇后问题: 搜索经典题。 难的点在于想出对角线的标记。 首先在棋盘上建立坐标(i,j); 可以放斜率为正(从左下到右上的直线 / 发现从左上到右下斜线排列的顺序,可以用 i + j 进行标记 0,1,2,3,4,5,6,7,8,9...12,13 那么类似的,我们可以推出 i - j 7.6,5, 阅读全文
posted @ 2019-03-09 15:46 zz2108828 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 一.欧几里得算法 作用: 求最大公约数,求最小公倍数,化简分子分母 二.欧几里得拓展 一. 欧几里得算法: gcd(a,b) = gcd(b,a mod b) (b < a) 作用 (1) 用多个数的最大公约数求最小公倍数 (2) 求出最大公约数 化简分数。 例题链接 二. 拓展欧几里得算法: 阅读全文
posted @ 2019-03-06 00:17 zz2108828 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 一. 普通的幂 二. 快速幂 模板 三. (一) 较慢的pow方法 外加 取余。 用到公式: f(x,y) = f(x,y/2) * f(x,y/2) * x ( y %2 = 1 and y >=1 ) 1 ( y = 0 ) f(x,y/2) * f(x,y/2) * x ( y %2 = 0 阅读全文
posted @ 2019-03-05 21:41 zz2108828 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 汉诺塔的模板 递归做法(超时): 递推做法: 阅读全文
posted @ 2019-03-05 19:52 zz2108828 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一 。所有(Bidirectional)(双向)迭代器都支持: list、set、multiset、map、multimap == iter1 == iter2 != iter1 != iter2 ++ iter++ ++iter -- iter-- --iter iter1 == iter2 it 阅读全文
posted @ 2019-03-05 16:55 zz2108828 阅读(1027) 评论(0) 推荐(0) 编辑
摘要: |vector| |set| |map| <vector> std::vector 动态数组,数组长度可变 方法: push_back(i) 在末尾加入一个元素i pop_back() 把末尾元素弹出 size() 获取容器长度 claer() 清空容器内容(没有清理内存) insert(const 阅读全文
posted @ 2019-03-03 21:05 zz2108828 阅读(1681) 评论(0) 推荐(0) 编辑
摘要: 使用指向函数的指针数组 bool cmp1(Stu s1,Stu s2); bool cmp2(Stu s1,Stu s2); //使用指向函数的指针数组 bool (*cmp_ptr[]) (Stu,Stu) = {cmp1,cmp2}; 阅读全文
posted @ 2019-03-03 20:05 zz2108828 阅读(615) 评论(0) 推荐(0) 编辑