拓展欧几里得定理主要用来求解同余线性方程,求逆元等,遇到题目给出形如ax+by==c,要求一组满足要求的x和y时,可以联系扩展欧几里得求解 拓展欧几里得由 gcd(a,b) = gcd(b,a%b) 推出 由于 a*x + b*y == gcd(a,b) 必定有解 所以 b*x + (a%b)*y ...
分类:
其他好文 时间:
2017-04-03 13:22:00
阅读次数:
153
考试的时候没有做出来。。。 想到了答案一定是一段连续的区间,一直在纠结BFS判断最后的可行1数。 原来直接模拟一遍就可以算出来最后的端点。。。 剩下的就是组合数取模了,用逆元就行了。。。 # include <cstdio> # include <cstring> # include <cstdli ...
分类:
其他好文 时间:
2017-03-27 22:59:57
阅读次数:
223
求$C_{n}^{m}\%p$。 把p拆成$p1^{q1}*p2^{q2}...$最后用CRT合并。 把每个阶乘拆成$x*p^y$的形式,因为x与$p^q$互质,可以直接用Euler定理求逆元,y就直接减。 拆的时候把每个p的倍数提出一个p,变为$tmp*(p^x*(1*2*3*4...))$,tm ...
分类:
其他好文 时间:
2017-03-20 18:55:38
阅读次数:
244
【bzoj2186】: [Sdoi2008]沙拉公主的困惑 考虑当 gcd(a,b)=1 则 gcd(nb+a,b)=1 所以[1,N!]与M!互质的个数就是 筛出[1,M]所有的素数p[i] 以及逆元 p[i]-1 处理一下前缀积inv[x]= 然后答案就是N!*inv[x] 1 /* http: ...
分类:
其他好文 时间:
2017-03-20 00:23:20
阅读次数:
202
A 前缀的积可以求出来 然后 z[b]/z[a-1] 就是要求的 求一下 z[a-1]的逆元 m为素数 可以用费马小定理 B 斐波那契数列 果断Java import java.math.*; import java.util.*; import java.lang.*; public class ...
分类:
其他好文 时间:
2017-03-19 17:28:27
阅读次数:
168
有一些实现的易错点。。 1,exgcd忘记返回gcd值而只顾着求逆元了 2,逆元和N/m[i]对应,算出对应逆元x后,贡献的值应该是N/m[i]*x*b[i] 3,看题目数据范围,可能会爆Int,比如我最后ans本来是算对了的,但是return (ans+N)%N之后就会爆int 所以这个写法慎用。 ...
分类:
其他好文 时间:
2017-03-18 16:13:47
阅读次数:
190
/* HDU4869 http://acm.hdu.edu.cn/showproblem.php?pid=4869 费马小定理+快速幂 求逆元 暴力组合数 奇偶性 */ #include #include using namespace std; const __int64 Nmax=100005L... ...
分类:
其他好文 时间:
2017-03-08 21:07:19
阅读次数:
132
普通的区间问题,用线段树就行了。 (用树状数组维护逆元和乘积作了一下死2333,TLE(应该是模数太大了,要用快速乘才能取到模,所以多了一个log)) (代码注释掉的是线段树,没注释的是T掉的树状数组) ...
分类:
其他好文 时间:
2017-02-23 21:00:56
阅读次数:
215
题意:求a^b的所有约数和对1e9+7取模的结果 思路:对于一个数p,进行唯一分解,则p=P1^M1*P2^M2*...*Pn^Mn,则p的所有约数之和等于(P1^0+P1^1+...+P1^M1)*(P2^0+P2^1+...+P2^M2)*...*(Pn^0+Pn^1+...+Pn^Mn), p ...
分类:
其他好文 时间:
2017-02-20 00:56:22
阅读次数:
296