数学知识
AcWing数学知识
奋斗吧!骚年!
一名爱健身的软件工程本科生
展开
-
数学知识:台阶-Nim游戏—博弈论
题目: AcWing 892. 台阶-Nim游戏现在,有一个 n 级台阶的楼梯,每级台阶上都有若干个石子,其中第 i 级台阶上有 ai 个石子(i≥1)。两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数 n。第二行包含 n 个整数,其中第 i 个整数表示第 i 级台阶上的石子数 ai。输出格式如果先手方必胜,则输出 Yes。否则,输出 No。原创 2022-07-02 23:13:02 · 171 阅读 · 0 评论 -
数学知识:Nim游戏—博弈论
题目: AcWing 891. Nim游戏给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数 n。第二行包含 n 个数字,其中第 i 个数字表示第 i 堆石子的数量。输出格式如果先手方必胜,则输出 Yes。否则,输出 No。数据范围1≤n≤105,1≤每堆石子数≤109输入样例:输出样例:题目分析:该题是博弈论的题目,必胜状态——>操作完能够让游原创 2022-07-02 17:06:51 · 612 阅读 · 0 评论 -
数学知识:能被整除的数—容斥原理
题目: AcWing 890. 能被整除的数给定一个整数 n 和 m 个不同的质数 p1,p2,…,pm。请你求出 1∼n 中能被 p1,p2,…,pm 中的至少一个数整除的整数有多少个。输入格式第一行包含整数 n 和 m。第二行包含 m 个质数。输出格式输出一个整数,表示满足条件的整数的个数。数据范围1≤m≤16,1≤n,pi≤109输入样例:输出样例:题目分析:该题用到了容斥原理首先能被m个不同的质数整除,那么可能就会有1、2、3… m个的情况。我们使用二进制数来枚举所有情况用S1表示原创 2022-07-02 16:06:40 · 372 阅读 · 0 评论 -
数学知识:满足条件的01序列—求组合数
题目: AcWing 889. 满足条件的01序列给定 n 个 0 和 n 个 1,它们将按照某种顺序排成长度为 2n 的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有多少个。输出的答案对 109+7 取模。输入格式共一行,包含整数 n。输出格式共一行,包含一个整数,表示答案。数据范围1≤n≤105输入样例:输出样例:题目分析:组合计数,卡特兰数...原创 2022-06-30 23:33:39 · 206 阅读 · 0 评论 -
数学知识:求组合数 IV—求组合数
题目: AcWing 888. 求组合数 IV输入 a,b,求 Cba 的值。注意结果可能很大,需要使用高精度计算。输入格式共一行,包含两个整数 a 和 b。输出格式共一行,输出 Cba 的值。数据范围1≤b≤a≤5000输入样例:输出样例:题目分析:这道题步骤:1.筛选素数2.求每个质数的次数3.用高精度乘把所有质因子乘上...原创 2022-06-30 21:33:55 · 104 阅读 · 0 评论 -
数学知识:求组合数 III—求组合数
题目: AcWing 887. 求组合数 III给定 n 组询问,每组询问给定三个整数 a,b,p,其中 p 是质数,请你输出 Cbamod p 的值。输入格式第一行包含整数 n。接下来 n 行,每行包含一组 a,b,p。输出格式共 n 行,每行输出一个询问的解。数据范围1≤n≤20,1≤b≤a≤1018,1≤p≤105,输入样例:输出样例:题目分析:从上面的公式可以知道组合数可以分解为数更小的组合数,我们可以使用快速幂求出逆元,来求的其组合数...原创 2022-06-30 20:53:38 · 177 阅读 · 0 评论 -
数学知识:求组合数 II—求组合数
题目: AcWing 886. 求组合数 II给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(109+7) 的值。输入格式第一行包含整数 n。接下来 n 行,每行包含一组 a 和 b。输出格式共 n 行,每行输出一个询问的解。数据范围1≤n≤10000,1≤b≤a≤105输入样例:输出样例:题目分析:该题是预处理阶乘因为组合可以换成阶乘的形式但是除法应该换成逆元,所以需要用到快速幂的知识求逆元。最后fact[i]表示i的阶乘,infact[i]表示i的逆元Cab=原创 2022-06-28 23:57:50 · 154 阅读 · 0 评论 -
数学知识:求组合数 I—求组合数
题目: AcWing 885. 求组合数 I给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(109+7) 的值。输入格式第一行包含整数 n。接下来 n 行,每行包含一组 a 和 b。输出格式共 n 行,每行输出一个询问的解。数据范围1≤n≤10000,1≤b≤a≤2000输入样例:输出样例:题目分析:根据加法计数原理有:Cba=Cb−1a−1+Cba−1所以可以先预处理,然后直接查表即可......原创 2022-06-28 21:47:21 · 69 阅读 · 0 评论 -
数学知识:线性同余方程—扩展欧几里得算法
题目: AcWing 878. 线性同余方程给定 n 组数据 ai,bi,mi,对于每组数求出一个 xi,使其满足 ai×xi≡bi(mod mi),如果无解则输出 impossible。输入格式第一行包含整数 n。接下来 n 行,每行包含一组数据 ai,bi,mi。输出格式输出共 n 行,每组数据输出一个整数表示一个满足条件的 xi,如果无解则输出 impossible。每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。输出答案必须在 int 范围之内。数据范围1≤n≤105,原创 2022-06-23 23:31:10 · 66 阅读 · 1 评论 -
数学知识:扩展欧几里得算法—扩展欧几里得算法
题目: AcWing 877. 扩展欧几里得算法 给定 n 对正整数 ai,bi,对于每对数,求出一组 xi,yi,使其满足 ai×xi+bi×yi=gcd(ai,bi)。输入格式第一行包含整数 n。接下来 n 行,每行包含两个整数 ai,bi。输出格式输出共 n 行,对于每组 ai,bi,求出一组满足条件的 xi,yi,每组结果占一行。本题答案不唯一,输出任意满足条件的 xi,yi 均可。数据范围1≤n≤105,1≤ai,bi≤2×109输入样例:输出样例:...原创 2022-06-23 23:18:29 · 101 阅读 · 0 评论 -
数学知识:快速幂求逆元—快速幂
题目: AcWing 876. 快速幂求逆元给定 n 组 ai,pi,其中 pi 是质数,求 ai 模 pi 的乘法逆元,若逆元不存在则输出 impossible。注意:请返回在 0∼p−1 之间的逆元。乘法逆元的定义输入格式第一行包含整数 n。接下来 n 行,每行包含一个数组 ai,pi,数据保证 pi 是质数。输出格式输出共 n 行,每组数据输出一个结果,每个结果占一行。若 ai 模 pi 的乘法逆元存在,则输出一个整数,表示逆元,否则输出 impossible。数据范围1≤n≤105,1≤a原创 2022-06-22 23:41:31 · 162 阅读 · 0 评论 -
数学知识:快速幂—快速幂
题目: AcWing 875. 快速幂给定 n 组 ai,bi,pi,对于每组数据,求出 aibimod pi 的值。输入格式第一行包含整数 n。接下来 n 行,每行包含三个整数 ai,bi,pi。输出格式对于每组数据,输出一个结果,表示 aibimod pi 的值。每个结果占一行。数据范围1≤n≤100000,1≤ai,bi,pi≤2×109输入样例:输出样例:题目分析:求 aibimod pi先预处理出:a的20次方 mod pa的21次方 mod p…a的2logk次方 mod原创 2022-06-22 23:20:52 · 87 阅读 · 0 评论 -
数学知识:欧拉函数—欧拉函数
题目: AcWing 873. 欧拉函数给定 n 个正整数 ai,请你求出每个数的欧拉函数。欧拉函数的定义1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。若在算数基本定理中,N=p1a1p2a2…pmam,则:ϕ(N) = N×(p1−1)/p1×(p2−1)/p2×…×(pm−1)/pm输入格式第一行包含整数 n。接下来 n 行,每行包含一个正整数 ai。输出格式输出共 n 行,每行输出一个正整数 ai 的欧拉函数。数据范围1≤n≤100,1≤ai≤2×109输入样例:输原创 2022-06-22 21:27:03 · 390 阅读 · 0 评论 -
数学知识:最大公约数—约数
题目: AcWing 872. 最大公约数 给定 n 对正整数 ai,bi,请你求出每对数的最大公约数。输入格式第一行包含整数 n。接下来 n 行,每行包含一个整数对 ai,bi。输出格式输出共 n 行,每行输出一个整数对的最大公约数。数据范围1≤n≤105,1≤ai,bi≤2×109输入样例:输出样例:...原创 2022-06-21 22:02:39 · 100 阅读 · 0 评论 -
数学知识:约数之和—约数
题目: AcWing 871. 约数之和给定 n 个正整数 ai,请你输出这些数的乘积的约数之和,答案对 109+7 取模。输入格式第一行包含整数 n。接下来 n 行,每行包含一个整数 ai。输出格式输出一个整数,表示所给正整数的乘积的约数之和,答案需对 109+7 取模。数据范围1≤n≤100,1≤ai≤2×109输入样例:输出样例:题目分析:如果 N=p1a1∗p2a2∗…∗pkak那么约数之和: (p10+p11+…+p1a1)∗…∗(pk0+pk1+…+pkak)如果求每一项中所有p原创 2022-06-21 21:31:46 · 142 阅读 · 0 评论 -
数学知识:约数个数—约数
题目: AcWing 870. 约数个数给定 n 个正整数 ai,请你输出这些数的乘积的约数个数,答案对 109+7 取模。输入格式第一行包含整数 n。接下来 n 行,每行包含一个整数 ai。输出格式输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7 取模。数据范围1≤n≤100,1≤ai≤2×109输入样例:输出样例:约数推导因为一个数可以因式分解N = p1a1 * p2a2 * …pkak那么每一个P都是一个质数,选择可以选择 0~a1个 相乘就是一个约数那么总个数就原创 2022-06-21 21:09:42 · 184 阅读 · 0 评论 -
数学知识:试除法求所有约数—约数
试除法求所有约数C++模板:vector<int> get_divisors(int x){ vector<int> res; for(int i=1;i<=x/i;i++) { if(x%i==0) { res.push_back(i); if(i!=x/i)res.push_back(x/i); } } sort(res.begin()原创 2022-04-27 23:46:58 · 277 阅读 · 0 评论 -
数学知识:分解质因数—质数
试除法分解质因数C++模板:void divide(int n){ int mid=sqrt(n); for(int i=2;i<=mid;i++)//只可能有一个大于根号n的数 { int k=0; while(n%i==0) { k++; n/=i; } if(k>0) cout<<i<<" "<<k&原创 2022-04-27 21:09:34 · 433 阅读 · 0 评论 -
数学知识:试除法判定质数—质数
试除法判断质数C++模板:bool is_Prime(int x){ if(x<2)return false; int mid=sqrt(x);//取出保存,防止每次执行 for(int i=2;i<=mid;i++) if(x%i==0)return false; return true;}质数: 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数题目: AcWing 866. 试除法判定质数给定 n 个正整数 a原创 2022-04-27 20:35:37 · 1210 阅读 · 0 评论