随笔分类 - 算法
摘要:1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时
阅读全文
摘要:刚开始以为就是一个前缀和加双指针,遍历一下就好了 刚开始的思路就搞一个S数组然后把输入进去的数组前i位相乘的到S[i]数组,然后当i>=k了的时候S[i]/a[i-k],然后代码写完提交发现我没有考虑0的情况。 然后等题解出来发现原来还有逆元这种骚东西。不愧是我,小菜鸡。还是太菜了啥都不知道。 具体
阅读全文
摘要:乘法逆元是用来: 定义: 若a*x≡1(mod b),且a与b互质,我们定义x是a的逆元,记为a^(-1),所以也可以说x是a在mod b意义下的倒数 所以对于a/b(mod p),我们可以先求出b在mod p下的逆元,然后乘a再mod p就是这个分数的值了 1.拓展欧几里得求逆元 #include
阅读全文
摘要:前提:知道普通欧几里得算法(辗转相除法)。 #include<bits/stdc++.h> using namespace std; long long x, y;//目前方程真正的解 void exgcd(long long a, long long b) { //当前目的:求解 ax + by
阅读全文
摘要:辗转相除法是用来计算两个整数的最大公约数。假设两个整数为a和b,他们的公约数可以表示为gcd(a,b)。如果gcd(a,b) = c,则必然a = mc和b = nc。a除以b得商和余数,余数r可以表示为r = a - bk,k这里是系数。因为c为 a和b的最大公约数,所以c也一定是r的最大公约数,
阅读全文