随笔分类 - 数论+数学
摘要:组合数 一、递推法求组合数 可以理解为 n个取m的所有情况数 可以分解为 n-1中的取m个 与 n-1中取m-1个 的情况数相加,也就是第n个取与不取的两种情况数和 //递推求组合数 const int N
阅读全文
摘要:高斯消元求解线性方程组 //#pragma comment(linker, "/STACK:10240000000000,10240000000000") //#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:拓展欧几里得: ll exgcd(ll a, ll b, ll &x, ll &y) { if(!b) { x = 1, y = 0; return a; } ll ans = exgcd(b, a % b, y, x); y -= a / b * x; return ans; //返回的还是gcd
阅读全文
摘要:#质数 1、试除法 For(int i = 1, i ≤ sqrt(x); i++) 2、埃氏筛(优化版) 求N以内的质数: 对于每个数x,只需从x²开始,将x²,(x+1)*x, (x+2)*x, ... ,[N/x]*x标记为合数即可; //#pragma comment(linker, "/S
阅读全文
摘要:前缀和 f[i] [j]为前缀和数组,a[i] [j]为原数组 f[i] [j] = f[i-1] [j] + f[i] [j-1] - f[i-1] [j-1] + a[i] [j] 算区间前缀和,画个图推公式 差分 原数组a[i], 差分数组f[i] = f[i] - f[i-1], f[1]
阅读全文
摘要:位运算 1、a*b%p 方法一:将b用二进制表示然后递推累乘 for(; b; b >>= 1) { ans = (ans + (b & 1) * a % p) %p; a = a * 2 % p; } 方法二:将ab mod p 转换成 ab - ⌊ab/p⌋ * p 令c = ⌊ab/p⌋; 用
阅读全文