数论
run around
这个作者很懒,什么都没留下…
展开
-
关于约数的题目
约数个数定理设n=∏i=1kpiqi设 n=\prod^k_{i=1}p_{i}^{q_{i}}设n=∏i=1kpiqi则n的约数个数为∏i=1k(qi+1)。则n的约数个数为\prod_{i=1}^{k}(q_i+1)。则n的约数个数为∏i=1k(qi+1)。原创 2021-03-09 17:47:47 · 297 阅读 · 0 评论 -
梅森素数
梅森数位形如2^p-1这样的数字,当这个数是素数时,称为梅森素数。目前找到的梅森素数有51个。a数组里存放的是p,而非真正的梅森素数。ll a[]={0,2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497,86243,110503,132049,216091,756839,859433,1257787,1398269,2976原创 2021-02-24 16:58:08 · 1348 阅读 · 0 评论 -
线性基
/*给定n个数,任取几个异或和最大 */ #include <iostream>using namespace std;typedef long long ll;ll p[55];void cal(ll x){ for (int i = 55; i >= 0; i--) { if( !(x & ((ll)1<<i)) ) con...原创 2019-11-05 15:50:08 · 625 阅读 · 0 评论 -
0/1分数规划
#include <iostream>#include <vector>#include <algorithm>#include <cmath>using namespace std;vector<double> num;const double eps = 1e-6;double a[1015],b[1015];in...原创 2019-11-01 17:55:01 · 63 阅读 · 0 评论 -
扩展BSGS算法
/*计算a^x = b mod p,求x*/#include <cstdio>#include <cmath>#include <map>using namespace std;typedef long long ll;ll q_pow(ll a,ll b,ll p){ ll ans = 1; while( b ) { if( b ...原创 2019-10-25 17:32:09 · 127 阅读 · 0 评论 -
数论分块
/*数论分块计算sum(n/i) i = 1 ... n; 复杂度O(2*sqrt(n)) */#include <iostream>using namespace std; typedef long long ll;ll cal(int n){ int r; ll ans = 0; for (int l = 1; l <= n; l = r + 1)...原创 2019-09-17 12:01:15 · 121 阅读 · 0 评论 -
拉格朗日插值法
给出n个点,其多项式函数f(x)=∑i=1n(∏j=1,j!=in(x−xixi−xj))∗yif(x) = \sum_{i=1}^n(\prod_{j=1,j != i}^n(\frac {x - x_i}{x_i-x_j}))*y_if(x)=∑i=1n(∏j=1,j!=in(xi−xjx−xi))∗yi/*拉格朗日插值法,复杂度O(n^2) 可以给出一个恰好穿过二维平面...原创 2019-08-17 12:30:23 · 138 阅读 · 0 评论 -
康托展开和逆康托展开
康托展开:给定一个全排列,计算其字典序。公式: rank[x]=a1∗(n−1)!+a2∗(n−2)!…ai∗(n−i)! (i<=n)rank[x] = a_1*(n-1)!+a_2*(n-2)!\dots a_i*(n-i)! \ (i<=n)rank[x]=a1∗(n−1)!+a2∗(n−2)!…ai∗(n−i)! (i<=n)...原创 2019-08-16 23:29:20 · 108 阅读 · 0 评论 -
卢卡斯定理
#include <cstdio>typedef long long ll;ll frac[100005]; //frac[i]表示i! void ext_gcd(int a,int b,int &x,int &y){ if( !b ) { x = 1; y = 0; }else { ext_gcd(b,a%b,y,x); y -...原创 2019-08-20 19:58:32 · 109 阅读 · 0 评论 -
欧拉定理及扩展
欧拉定理:对于任意互素的a和n,有aφ(n)≡1(modn)a^{\varphi(n)}\equiv1(mod n)aφ(n)≡1(modn)证明:记小于n且与n互素的数为 R = {x1,x2...xφ(n)x_1,x_2...x_\varphi(n)x1,x2...xφ(n)}令S = {ax1%n,ax2%n,⋯ ,axφ(n)%n}\{ax_1\%...原创 2019-08-14 21:55:01 · 678 阅读 · 0 评论 -
中国剩余定理及拓展
定理推导m1,m2,…mn两两互质,就可以使用中国剩余定理扩展中国剩余定理x % m1m_1m1 = a1a_1a1 (1)x % m2m_2m2 = a2a_2a2 (2)…x % mnm_nmn = ana_nan (n)m1m_1m1,m2m_2m2,…mnm_nmn两两不一定互质,求解x推导过程若n = 1,显然x = km1m_1m1 + ...原创 2019-07-30 10:51:27 · 140 阅读 · 0 评论 -
扩展欧几里得算法及其应用
扩展欧几里得算法不仅可以算出a,b的最大公约数 ,还可以给出不定方程ax+by = gcd(a,b)的一组解证明解不定方程:ax1 + by1 = gcd(a,b)由欧几里得算法得 gcd(a,b) = gcd(b,a%b)gcd(b,a%b) = bx2 + (a%b)y2a%b = a - a/b将a%b带入得bx2 + (a - a/b)y2 = ay2 + b(x2 - a/...原创 2019-07-20 14:47:57 · 234 阅读 · 0 评论 -
欧拉函数
对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(其中φ(1)=1)例如φ(8)=4,因为1,3,5,7均和8互质φ(n) = n * (1-1/p1) * (1-1/p2)…(1-1/pn)。其中p1,p2…pn是n的质因数对公式的理解:先理解一下这个定理:任意一个大于1的正整数,都可以写成一系列质数的积。对于任意的一个pi,因为pi与n互质,那么1~n中有1/pi的部分是pi的...原创 2019-05-15 18:29:31 · 205 阅读 · 0 评论 -
欧拉线性筛求素数
欧拉线性筛是一个求一定范围内的素数非常优秀的算法,复杂度为O(n)算法的主要思想:对于任何一个合数z,都必定存在一个素数x,使得z = x * y(y != 1)。所以根据这条性质,我们就可以利用已知的素数排除质数。问题1: 在这里x,y在遍历的时候会乘起来两次,比如6 = 2 * 3 = 3 * 2。为了避免这种情况,我们只要保证x <= y即可,这样就省下了一半的时间了。所以在代...原创 2019-05-15 17:15:24 · 260 阅读 · 0 评论