
0x30 数学知识
文章平均质量分 90
中国剩余定理、乘法逆元、快速幂、矩阵快速幂、分解质因数、素数筛法、gcd、lcm、约瑟夫环问题、博弈论
常欢愉皆胜意且顺遂
记得一定要努力,不然往后余生,做饭是你,洗衣是你,做家务是你……是你是你还是你
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排列组合经典问题(捆绑法、插空法、插板法)
题目1:有 n 个小球,放入 m 个盒子,每个盒子里至少 1 个,求有多少种情况?解析:我们可以把问题转化为:有 n 个小球,所以在小球之间有 n−1 个空隙我们可以把问题转化一下,有~n~个小球,所以在小球之间有~n-1~个空隙我们可以把问题转化一下,有 n 个小球,所以在小球之间有 n−1 个空隙放入 m 个盒子,说明要把小球分成 m 份,所以需要在小球之间的空隙中插&nb.原创 2021-09-13 18:46:28 · 1884 阅读 · 0 评论 -
曹冲养猪(中国剩余定理)
链接:https://ac.nowcoder.com/acm/problem/50569来源:牛客网题目描述自从曹冲搞定了大象以后,曹操就开始琢磨让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲很不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。 举个例子,假如有16头母猪,如果建了3个猪圈,剩下1头猪就没有地方安家了;如果建造了5个猪圈,但是仍然有1头猪...原创 2020-02-18 17:04:21 · 815 阅读 · 1 评论 -
求解乘法逆元的方法
求解乘法逆元有三种常用方法:1、费马小定理/欧拉函数2、扩展欧几里德算法3、线性求逆元取模公式(a+b) mod p=(a mod p+b mod p) mod p(a+b)~mod~p=(a~mod~p+b~mod~p)~mod~p(a+b) mod p=(a mod ...原创 2020-02-10 22:09:42 · 4477 阅读 · 0 评论 -
矩阵快速幂模板
50579 Fibonacci 第 n 项题目链接:https://ac.nowcoder.com/acm/problem/50579#include <cstdio>#include <iostream>#include <vector>using namespace std;typedef long long ll;typedef vecto...原创 2020-02-09 18:34:01 · 205 阅读 · 0 评论 -
容斥原理模板
题目链接:https://ac.nowcoder.com/acm/problem/14686来源:牛客网集合中的质数题目描述给出一个集合和一个数m。 集合里面有n个质数。 请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。输入描述:第一行两个正整数 n 和 m 。第二行n个正整数,分别为集合中的质数。输出描述:输出一个整数,表示符合要求的正整数的...原创 2020-02-09 17:36:49 · 329 阅读 · 0 评论 -
分解质因数算法和欧拉函数
分解质因数的含义:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。如30=2×3×5 。分解质因数只针对合数。#include <cstdio>#include <iostream>using namespace std;int main(void){ int n; cin >...原创 2019-11-24 16:05:28 · 747 阅读 · 0 评论 -
辗转相除法(gcd、exgcd)
用于求两个数的最大公约数。复杂度在O(log(max(a,b)))O(log(max(a,b)))O(log(max(a,b)))以内。#include <cstdio>#include <iostream>using namespace std;int gcd(int a, int b){ if (b == 0) return a; return gcd(...原创 2019-11-24 14:50:23 · 403 阅读 · 0 评论 -
64位整数乘法、快速幂和次方求模
快速幂#include <cstdio>#include <iostream>using namespace std;typedef long long ll;ll pow(ll x, ll n){ ll res = 1; while (n > 0){ if (n & 1) res = res * x;//如果为1,则乘上x^(2^i)...原创 2019-11-24 14:26:06 · 765 阅读 · 0 评论 -
素数筛法(埃氏筛法、欧拉筛法)
# 埃氏筛法 埃氏筛法可以求出n以内的所有素数,并返回素数个数,复杂度为$O(nloglogn)$。O(nloglogn)O(nloglogn)O(nloglogn)。#include <cstdio>#include <iostream>using namespace std;const int N = 1e5 + 5;int prime[N];bool is_prime[N];int sieve(int n){...原创 2019-11-16 23:38:47 · 391 阅读 · 0 评论 -
约瑟夫环问题(数学方法求解)
问题描述:n个人(编号0 ~ n-1),从0开始报数,报到m-1的退出,剩下的人继续从0开始报数。求胜利者的编号。分析:第一个出列的人编号是m-1,剩下的n-1个人就又组成了一个新的约瑟夫环(从编号为k = m % n的人开始),有:出列前的编号kk+1k+2…n-2n-1012…k-2出列后的编号012……n-2这样就重...原创 2019-10-11 19:54:48 · 978 阅读 · 0 评论 -
最大公约数和最小公倍数
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数用最初的两个数的乘积再处以最大公约数就可得到最小公倍数...原创 2020-07-06 14:34:24 · 603 阅读 · 0 评论 -
NYOJ 取石子
文章目录取石子(一)DescriptionInputOutputSample Input CopySample Output Copy取石子(二)DescriptionInputOutputSample Input CopySample Output CopyHINT取石子(一)Description一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头...原创 2020-01-29 22:16:16 · 2028 阅读 · 0 评论 -
T77092 玩什么石头 尼姆博弈
题目背景MJJ喜欢玩石子游戏,两个人玩,现在MJJ准备了n堆石子,每堆有mi个,轮流进行,每次可以任意选择一堆取走一个或多个石子,谁先不能取谁输。题目描述MJJ喜欢先手取石头,现在给你每堆石头的数目,请你判断,如果MJJ赢则输出"Yes",否则输出"No"。(输出不带引号)输入输出格式输入格式:多组数据,第一行一个正整数T,表示数据组数。每组数据:第一行一个n,k表示一共有n堆石子...原创 2019-04-23 22:41:59 · 410 阅读 · 0 评论 -
SG函数题目
Description大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。“升级”?“双扣”?“红五”?还是“斗地主”?当然都不是!那...原创 2019-04-18 22:41:09 · 178 阅读 · 0 评论 -
VJ 博弈论基础练习D 斐波那契博弈
D - 取石子游戏Description1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".Input输入有多组.每组第1行是2<=n<2^31. n=0退出.Output先取者负输出"Second win". 先取者胜输出"F...原创 2019-04-11 16:15:09 · 154 阅读 · 0 评论 -
VJ 博弈论基础练习C 威佐夫博弈
C - 取石子游戏Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。Input输入包含若干行,表示若干种石子的初始情况,其中...原创 2019-04-11 16:11:37 · 253 阅读 · 0 评论 -
VJ博弈论基础练习AB 巴什博弈
A - Brave GameDescription十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。...原创 2019-04-11 16:01:14 · 537 阅读 · 0 评论 -
VJ 博弈论基础练习E 尼姆博弈
Problem Description一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧陪妈妈逛一次菜场悄悄给爸爸买个小礼物主动地 强烈地 要求洗一次碗某一天早起 给爸妈用心地做回早餐如果愿意 你还可以和爸妈说咱们玩个小游戏吧 ACM课上学的呢~下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任...原创 2019-04-11 15:36:16 · 494 阅读 · 0 评论 -
约数
201. 可见的点#include <iostream>#include <cstring>#include <algorithm>using namespace std;int euler_phi(int n){ int res = n; for (int i = 2; i * i <= n; i++){ if (n % i =...原创 2020-02-11 21:54:39 · 142 阅读 · 0 评论 -
质数
197. 阶乘分解#include <iostream>#include <algorithm>using namespace std;const int N = 1e6 + 5;typedef long long ll;int prime[N];bool is_prime[N];int sieve(int n){ int cnt = 0; fo...原创 2020-02-11 21:31:33 · 257 阅读 · 0 评论 -
同余
203. 同余方程#include <cstdio>#include <iostream>using namespace std;int exgcd(int a, int b, int& x, int& y){ int d = a; if (b != 0){ d = exgcd(b, a % b, y, x); y -= (a / ...原创 2020-01-16 19:57:25 · 650 阅读 · 0 评论 -
矩阵乘法
205. 斐波那契#include <cstdio>#include <iostream>#include <vector>using namespace std;typedef long long ll;typedef vector<ll> vec;typedef vector<vec> mat;int M = ...原创 2020-01-15 20:51:52 · 149 阅读 · 0 评论