随笔分类 -  数论+数学

摘要:组合数 一、递推法求组合数 O(n) Cnm=Cn1m+Cn1m1 可以理解为 n个取m的所有情况数 可以分解为 n-1中的取m个 与 n-1中取m-1个 的情况数相加,也就是第n个取与不取的两种情况数和 //递推求组合数 const int N 阅读全文
posted @ 2021-12-05 13:21 Yra 阅读(234) 评论(0) 推荐(0) 编辑
摘要:高斯消元求解线性方程组 //#pragma comment(linker, "/STACK:10240000000000,10240000000000") //#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; 阅读全文
posted @ 2021-12-03 19:40 Yra 阅读(34) 评论(0) 推荐(0) 编辑
摘要:拓展欧几里得: 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 阅读全文
posted @ 2021-11-05 18:27 Yra 阅读(33) 评论(0) 推荐(0) 编辑
摘要:#质数 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 阅读全文
posted @ 2021-11-04 21:05 Yra 阅读(61) 评论(0) 推荐(0) 编辑
摘要:前缀和 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] 阅读全文
posted @ 2021-11-04 20:20 Yra 阅读(69) 评论(0) 推荐(0) 编辑
摘要:位运算 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⌋; 用 阅读全文
posted @ 2021-11-04 20:18 Yra 阅读(98) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示