![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学算法
数学知识
质数
约数
欧拉函数
快速幂
扩展欧几里得算法
中国剩余定理
高斯消元
组合计数
容斥原理
简单博弈论
SoKeeGumpCN
瞎混
展开
-
矩阵快速幂
record:public static int[][] multiply(int[][] a, int[][] b) { int[][] arr = new int[a.length][b[0].length]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < b[0].length; j++) { for (int k = 0; k &l原创 2021-02-23 15:40:20 · 123 阅读 · 0 评论 -
AcWing 870. 约数个数(约数个数定理)
本文介绍约数个数定理,一个数的约数是可以计算的。···参照百度百科-约数个数定理假设:正整数378000共有多少个正约数?解:将378000分解质因数378000=24×33×53×71由约数个数定理可知378000共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。···练习题-Problem简单的思路就是用哈希表存下<底数, 指数>最后再将指数求积即可,注意每次求积都要求余,否则会移除(即使long也如此)Accepted Code:import jav原创 2021-01-18 23:48:07 · 489 阅读 · 2 评论 -
HDU 2669Romantic(扩展欧几里得)
Problem扩展欧几里得的裸题import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigInteger;import java.util.Arrays;import java.util.Scanner;class Ma...原创 2020-03-22 16:48:55 · 143 阅读 · 0 评论 -
HDU1061 Rightmost Digit (快速幂)
Problem快速幂模板原理如下import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigInteger;import java.util.Arrays;import java.util.Scanner;class ...原创 2020-03-22 10:52:02 · 87 阅读 · 0 评论 -
HDU1164 Eddy's research I (试除法)
Problem试除法根据题意处理一些边边角角的问题即可提交。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigInteger;import java.util.Arrays;import java.util.Sc...原创 2020-03-21 13:29:41 · 88 阅读 · 0 评论 -
AcWing 1246. 等差数列(最大公约数)
Problem答案不难看出应该为 (a[n - 1] - a[0]) / d + 1因为要排序,所以a数组已经确定了,那么只能让公差d尽可能取大,此时用到所有差值的最大公约数即可别忘了最大公约数的O(1)复杂度的函数int gcd(int a, int b){ return b != 0 ? gcd(b, a % b) : a;}完整代码:import java.io.Buff...原创 2020-03-15 18:38:16 · 197 阅读 · 0 评论 -
AcWing 1211. 蚂蚁感冒 (分析)
Problem这个题之前困扰了一段时间,没想到点拨一下,蚂蚁碰面可以看作不掉头而继续前进,因为两只蚂蚁如果都染病了,掉头和前进没有区别。这样就简单了许多,分别按情况统计染病蚂蚁即可。import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;public class...原创 2020-02-05 21:00:33 · 217 阅读 · 0 评论 -
AcWing 1205. 买不到的数目(数学)
Problem十分经典的一道数学题,证明题。证明方法比较繁琐,具体证明可以看这个博客公式可以当作一个定理来记:x y 互质,则ax + by不能表示的最大数为 x * y - x - yimport java.io.*;class Main { static BufferedReader br = new BufferedReader(new InputStreamReader...原创 2020-02-05 18:57:42 · 224 阅读 · 0 评论 -
AcWing 894. 拆分-Nim游戏 (博弈论)
题目数论章节中的最后一题,也是博弈论的最后一节。堆ai拆分成b1,b2后,一个重要的性质就是sg(b1,b2) = sg(b1) ^ sg(b2)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;im...原创 2019-12-20 05:52:20 · 307 阅读 · 0 评论 -
AcWing 893. 集合-Nim游戏(博弈论-SG)
这个博弈论设计到Mex运算和SG函数,比上次得稍微复杂一点,但是宗旨不变,就是利用异或运算,0为必败,非零必胜。题目定理1:对于集合S,mex(S)=mex({x1,x2…})=S中 没有出现的 最小非负整数定理2:sg(n)=mex({sg(i1),sg(i2),sg(i3)…})。定理3:sg(G1)^ sg(G2) ^ sg(G3)…sg(Gn)为n个有向图的异或和,对于n个有向图游...原创 2019-12-20 04:31:03 · 165 阅读 · 0 评论 -
AcWing 892. 台阶-Nim游戏 (博弈论-公平组合游戏)
另一类的公平组合游戏,台阶问题。这一题的方法是我们只需要去异或奇数项(奇数台阶,从1开始)。证明方法类似,如果对手动了偶数项台阶的石头那我们模仿他动奇数项台阶的石头,这样的话又能维护奇数项台阶石子相同。import java.io.*;class Main{ static BufferedReader br = new BufferedReader(new InputStreamR...原创 2019-12-18 04:10:31 · 298 阅读 · 0 评论 -
AcWing 891. Nim游戏 (博弈论-公平组合游戏)
开始学习博弈论基础,博弈论是非常非常难的一种题,大致分为几种类型。公平组合游戏有向图游戏Mex运算SG函数本题是最简单的Nim游戏,也称作拿石子游戏。题目...原创 2019-12-18 02:10:09 · 225 阅读 · 0 评论 -
AcWing 890. 能被整除的数 (容斥原理)
题目这道题容斥原理,还是有点复杂的,主要体现在代码实现上,理论上用韦恩图非常好证明,也非常好理解。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static ...原创 2019-12-16 05:21:59 · 300 阅读 · 0 评论 -
AcWing 889. 满足条件的01序列 (卡特兰数)
题目受不了这个csdn一会儿上传不了图一会儿打不开编辑页。卡特兰数是 C(2n,n) - C(2n,n - 1) = 分子C(2n, n)分母 n + 1用上节的逆元和求组合数直接给出,需要注意的是在同余mod情况下除法必须用逆元,直接除会错误。import java.io.BufferedReader;import java.io.IOException;import java.io...原创 2019-12-15 23:16:16 · 251 阅读 · 0 评论 -
AcWing 888. 求组合数 IV (大数运算)
组合数第四节,对于Java来说就是一个大数训练。题目import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;class Main { stat...原创 2019-12-15 05:05:20 · 196 阅读 · 0 评论 -
AcWing 887. 求组合数 III (卢卡斯定理)
题目组合数第三节,这次给的ab非常大达到1e18的级别,显然预处理硬算不行,这题用到卢卡斯定理。需要取模的题目真是一个取模漏了数字就超了…代码中C的公式是C约分后的计算方式,不难理解。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import ja...原创 2019-12-15 04:45:36 · 204 阅读 · 0 评论 -
AcWing 886. 求组合数 II (排列组合 + 逆元 + 快速幂)
第二节,数据范围扩大。采用逆元优化,快速幂优化。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br = new Buf...原创 2019-12-15 02:04:36 · 172 阅读 · 0 评论 -
AcWing 886. 求组合数 I (排列组合)
第一节,各个数据范围都比较小,采用预处理,直接输出答案。题目import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br = n...原创 2019-12-15 02:03:32 · 139 阅读 · 2 评论 -
AcWing 884. 高斯消元解异或线性方程组(高斯消元)
AcWing 题目其实和高斯消元解线性方程组一样,就是加法变成了异或运算,可能会有点绕。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static Buffered...原创 2019-12-14 05:10:13 · 164 阅读 · 0 评论 -
AcWing 883. 高斯消元解线性方程组(高斯消元)
这完全就是线性代数的矩阵解方程但是代码写起来还是有点麻烦的。题目浮点数比较还是用一个误差计算合适,Java有时候也不能完美的处理浮点数运算。类似这样double xxx = 1e-6;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import ja...原创 2019-12-09 04:56:12 · 233 阅读 · 0 评论 -
AcWing 204. 表达整数的奇怪方式(中国剩余定理)
题目之前没学基础课之前曾经数学块多次死在中国剩余定理上,这次要恶补了。求解线性同余方程组目前正在理论证明中…代码还未开始写。原创 2019-12-07 06:25:52 · 236 阅读 · 0 评论 -
AcWing 878. 线性同余方程 (扩展欧几里得)
题目扩展欧几里得的应用,先将公式变形同时将结果扩大res/bimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br = ...原创 2019-12-05 19:34:03 · 164 阅读 · 1 评论 -
AcWing 877.扩展欧几里得算法(裴蜀定理 + 扩展欧几里得)
原理 + 推导用来解决这类问题值得注意的是 xy的值多次改变并且需要记录输出,C++中直接引用就好,Java通过数组即可。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main {...原创 2019-12-05 18:53:00 · 268 阅读 · 0 评论 -
AcWing 876.求逆元 (快速幂 + 费马小定理)
题目逆元的求法,用到欧拉定理和费马小定理,然后用快速幂优化。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br =...原创 2019-12-04 06:11:12 · 165 阅读 · 0 评论 -
AcWing 875.快速幂 (快速幂模板)
快速幂模板模板题import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br = new BufferedReader(new...原创 2019-12-03 05:40:33 · 292 阅读 · 0 评论 -
AcWing 874.线性筛法求欧拉函数 (数论 + 线性筛法 + 欧拉函数)
英语耍够了,没法很清晰的表达思路,还是换母语比较好…先看题目把,这个题需要求1-n的欧拉函数值,如果直接大循环来做是要超时的。题目链接这个题嵌套了之前的线性筛法选质数的模板,然后加上欧拉函数的公式,具体情况如下:(图片老上传失败,我真的很忧伤)这里的prime数组就是欧拉公式中的p1, p2, p3, …, pk顺带一提当i % prime[j] == 0时 prime[j]就是i的...原创 2019-12-02 20:47:08 · 230 阅读 · 0 评论 -
AcWing 873.Euler (Euler) Described by Java
Euler function to get the number of relatively prime to N between 1 - N.Problem in AcWingPic always uploaded unsuccessfully,so we can see the Euler.import java.io.BufferedReader;import java.io.IOE...原创 2019-12-02 00:03:12 · 83 阅读 · 0 评论 -
AcWing 872.GCD(GCD) Described by Java
The module of GCD.No recursion, or stack over.Problem in AcWingimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main {...原创 2019-12-01 17:31:23 · 157 阅读 · 0 评论 -
AcWing 871.Sum of Divisors(Fundamental Theorem of Arithmetic + Multiplication)
Now how to get the sum of the divisors?Problem in AcWingsimpler than last problem.N = P1α1 + P2α2 + … + pNαNSo the sum = (P10 + P11 + … + P1α1) * (P20 + P21 + … + P2α2) * … * (PN0 + PN1 + … + PNα...原创 2019-12-01 16:59:55 · 89 阅读 · 0 评论 -
AcWing 870.Number of Divisors (Fundamental Theorem of Arithmetic)
We should know about the Fundamental Theorem of ArithmeticAnd we can get the number of the divisors by multipling (α1 + 1) * (α2 + 1) * … * (αN + 1).Basic of Principle of Multiplication.import java...原创 2019-12-01 06:04:45 · 75 阅读 · 0 评论 -
AcWing 869.Trial Division to get Divisor(Trial Division) Described by Java
Similar to getting the Prime NumberIf i (i < n) is a divisor of n ,then n / i ditto.Problem in AcWingimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;...原创 2019-12-01 03:25:37 · 93 阅读 · 0 评论 -
AcWing 860.Dyeing to judge Bipartite Graph(Dyeing) Described by Java
Cause of the changing of memory, this problem can be solved.It’s about Bipartite Graph.Problem in AcWingPrinciple is原创 2019-12-01 02:24:58 · 186 阅读 · 0 评论 -
AcWing 868.Choose PrimeNumber(PrimeNumber) Described by Java
To counter the number of Prime number between 1 - n.The mainly is to delete the number and its multiple.Problem in AcWingSimply codeThe time complexity is the O(nlogn) (Harmonic series)We need t...原创 2019-11-30 07:00:20 · 92 阅读 · 0 评论 -
AcWing 867.Factorization Factor(PrimeNumber) Described by Java
This is to factor a number quickly, if can done successfully the last problem, this is easy.Problem in AcWingMy WA code :import java.io.BufferedReader;import java.io.IOException;import java.io.In...原创 2019-11-29 06:39:37 · 195 阅读 · 0 评论 -
AcWing 866.PrimeNumber (PrimeNumber) Described by Java
Now we will learn the Number Theory in ACM.This article is about how to judge a prime number quickly.Problem in AcWingNormal thinkingfor (int i = 2; i < (n >> 1); i++) if (n % i == 0) re...原创 2019-11-29 04:26:09 · 157 阅读 · 0 评论