首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
模板—数学—Lucas
】的更多相关文章
模板—数学—Lucas
模板—数学—Lucas Code: #include <cstdio> #include <algorithm> using namespace std; #define N 100010 int n,m,p,inv[N],powq[N]; int lucas(int n,int m) { if(n<m) return 0; if(n<=p&&m<=p) return 1ll*powq[n]*inv[m]%p*inv[n-m]%p; return…
模板—数学—Exgcd
模板—数学—Exgcd Code: #include <cstdio> #include <algorithm> using namespace std; int ex_gcd(int a,int b,int &x,int &y) { if(!b) {x=1,y=0;return a;} int gcd=ex_gcd(b,a%b,x,y),tmp=x; x=y,y=tmp-a/b*y; return gcd; } int a,b,c,gcd,x1,y1; int m…
[SinGuLaRiTy] 复习模板-数学
[SinGuLaRiTy-1047] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 质因数分解 void solve(int n) { ==) { printf(); n/=; } ;i<=sqrt(n);i+=) { ) { n/=i; printf("%d*",i); i-=; } } printf("%d\n",n); } 欧拉线性筛素数 #define MAXN 100005 #define…
BZOJ 4403: 序列统计 数学 lucas
4403: 序列统计 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4403 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数.第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. Output 输出包含T行,每行有一个数字,表示你所求出的答案对106+3取模的结果…
算法模板の数学&数论
1.求逆元 int inv(int a) { ) ; return (MOD - MOD / a) * inv(MOD % a); } 2.线性筛法 bool isPrime[MAXN]; int label[MAXN], prime[MAXN]; int n, total; void makePrime() { n = ; ; i <= n; ++i) { if(!label[i]) { prime[total++] = i; label[i] = total; } ; j < label[…
求大的组合数模板 利用Lucas定理
Lucas定理:A.B是非负整数,p是质数.A B写成p进制:A=a[n]a[n-1]…a[0],B=b[n]b[n-1]…b[0]. 则组合数C(A,B)与C(a[n],b[n])C(a[n-1],b[n-1])…*C(a[0],b[0]) mod p同余 即:Lucas(n,m,p)=C(n%p,m%p)*Lucas(n/p,m/p,p) ll fact[maxn], a[maxn], inv[maxn]; //fact为阶乘 void init() { a[0] = a[1] = 1; f…
模板 - 数学 - 同余 - 扩展Euclid算法
普通的扩展欧几里得算法,通过了洛谷的扩展欧几里得算法找乘法逆元.修复了容易溢出的bug,虽然新版本仍有可能会溢出longlong,假如参与运算的数字都是longlong,假如可以的话直接使用__int128或者去抄一个RoundGod的BigInt的模板(这里的C题).事不宜迟明天就抄这个大数模板. 求解模n意义下a的逆元,即求方程LCE2(a,1,n,x),结果放入x中,返回值指示是否有解. ll gcd(ll a, ll b) { if(b == 0) return a; while(ll…
【模板】Lucas定理
代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e5+10; int p; LL fac[maxn],inv[maxn]; LL fpow(LL a,LL b,LL mod){ LL ret=1%mod; for(;b;b>>=1,a=a*a%mod)if(b&1)ret=ret*a%mod; return ret; } LL C(int n,i…
模板 - 数学 - 快速傅里叶变换/快速数论变换(FFT/NTT)
先看看. 通常模数常见的有998244353,1004535809,469762049,这几个的原根都是3.所求的项数还不能超过2的23次方(因为998244353的分解). 感觉没啥用. #include <cstdio> #include <cstring> template <class T> inline void swap(T &a, T &b) { T c; c = a; a = b; b = c; } ; , G = ; inline in…
模板 - 数学 - 数论 - 扩展Euler定理
费马(Fermat)小定理 当 \(p\) 为质数,则 \(a^{p-1}\equiv 1 \mod p\) 反之,费马小定理的逆定理不成立,这样的数叫做伪质数,最小的伪质数是341. 欧拉(Euler)定理 扩展欧拉(Euler)定理 根据扩展欧拉定理,不管a和p是不是互质,都可以缩小到 \([\varphi(p),2\varphi(p)]\) 之间,然后暴力用快速幂求解.…