![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
04数学知识
文章平均质量分 58
数学知识相关算法
数学系的学渣
这个作者很懒,什么都没留下…
展开
-
10简单博弈论
简单博弈论Nim游戏证明结论台阶-Nim游戏思路集合-Nim游戏SG函数定理拆分-Nim游戏Nim游戏证明0 ^ 0 ^ 0 … 0 这是一个必败态。显然可得。如果a1a_{1}a1 ^ a2a_{2}a2 ^ … ^ ana_{n}an = x != 0 ,我们总能拿掉一些石子,使它们的异或为0。证明:不妨设x的二进制表示中最高一位1在第k位,那么在a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,…,an中,必然有一个数aia_{i}ai,它的第k位是1,且原创 2021-05-12 12:01:39 · 433 阅读 · 2 评论 -
09容斥原理
容斥原理定理: 共有n个集合,它们的并可以表示为如下关系∣A1∪A2∪...∪An∣=∑i=1n(−1)i−1∑i个数的组合∣A1∩A2∩...∩Ai∣|A_{1} \cup A_{2} \cup...\cup A_{n}| = \sum_{i=1}^n{(-1)^{i-1}\sum_{i个数的组合}{|A_{1} \cap A_{2} \cap...\cap A_{i}|}}∣A1∪A2∪...∪An∣=∑i=1n(−1)i−1∑i个数的组合∣A1∩A2∩...∩Ai∣证明:goa原创 2021-05-12 09:26:34 · 174 阅读 · 2 评论 -
08组合数
组合数组合数1组合数2组合数3组合数4习题组合数1根据递推关系Cnm=Cn−1m+Cn−1m−1C_{n} ^ m = C_{n - 1} ^ m + C_{n - 1} ^ {m - 1}Cnm=Cn−1m+Cn−1m−1预处理C的每个值。注:需要开n^2的空间,所以所求的n不能太大求组合数 I给定 n 组询问,每组询问给定两个整数 a,b,请你输出 CabC_{a}^bCab mod (10^9 + 7) 的值。输出格式共 n 行,每行输出一个询问的解。数据范围1≤n≤100原创 2021-05-12 08:53:22 · 226 阅读 · 0 评论 -
07高斯消元
高斯消元其实就是高代中初等行变换将矩阵转化成阶梯型原题链接:高斯消元解线性方程组输入一个包含 n 个方程 n 个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。#include <iostream>#include <cmath>#include <algorithm>using namespace std;const int N = 105;const double eps = 1e-6;int n;double a[N][原创 2021-05-09 12:39:05 · 88 阅读 · 0 评论 -
05扩展欧几里得算法
原题链接#include <iostream>using namespace std;// ax + by = gcd(a, b)// 可以根据一个解推出所有解:x = x0 - b / d * k , y = y0 + a / d * kint n;int a, b;int exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return a; } // 递归原创 2021-05-08 09:29:35 · 91 阅读 · 0 评论 -
04快速幂
原题链接#include <iostream>using namespace std;typedef long long LL; int n;LL a, b, p;// a ^ b % pLL binary_pow(LL a, LL b, LL p) { LL res = 1, t = a; while (b != 0) { if (b & 1) { res = res * t % p; } t = t * t % p; b >>原创 2021-05-08 09:20:51 · 87 阅读 · 0 评论 -
03欧拉函数
#include <iostream>using namespace std;int n, a; // n的欧拉函数为1~n-1中与n互质的数的个数 // 证明不完整,具体可以查看 https://blog.csdn.net/qq_36056315/article/details/79902298 // 欧拉函数:容斥原理 N = p1^a1 * p2^a2 *...* pk^ak // 1. 先减去N的所有pi的倍数的数的个数 N / pi// 2. 再加上pi * pj原创 2021-05-08 09:15:24 · 106 阅读 · 0 评论 -
02约数
#include <iostream>using namespace std;int n, a;void divide(int x) { if (x < 2) { cout << endl; return; } for (int i = 2; i <= x / i; i ++ ) { // i一定为质数,如果不为质数,那它一定被比它小的质数除过,矛盾 if (x % i == 0) { int nums = 0; // 将所原创 2021-05-08 09:09:20 · 138 阅读 · 0 评论 -
01质数
#include <iostream>using namespace std;typedef long long LL;int n;LL a; bool is_prime(LL x) { if (x < 2) return false; // i <= x / i 防止溢出 for (LL i = 2; i <= x / i; i ++ ) { if (x % i == 0) return false; } return true;}int原创 2021-05-08 09:05:30 · 113 阅读 · 0 评论