数论模版
Anoyer
这个作者很懒,什么都没留下…
展开
-
博弈论模版(Bash博弈,Nim博弈,威佐夫博弈,SG打表)
博主链接Bash--两人从一堆a个石子里面轮流取石子,每次最多去b个,取到最后一个石子获胜int main() { int t; scanf("%d", &t); while (t--) { int a, b,flag; scanf("%d%d", &a, &b); if (a % (b + 1) == 0)flag = 2; else fl...原创 2018-09-12 17:20:11 · 1075 阅读 · 0 评论 -
最长循环节模版
博主链接//正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,//则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,//假如存在多个最优的答案,输出所有答案中最大的那个数。 /**如果1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/a 的循环节位数恰好等于e 满足min(10^e≡1(moda))),e是正整数。*如果1<...原创 2018-09-16 16:27:15 · 1651 阅读 · 0 评论 -
组合数打表及快速求组合数
博主链接求组合数ll C(ll n,ll m) {ll ret=1;for(ll i=1; i<=m; ++i)ret=ret*(n-i+1)/i; return ret;}组合数打表#include <bits/stdc++.h>using namespace std;int C[1005][1005];int main(){ C[0][0] =...原创 2018-09-16 16:27:21 · 1382 阅读 · 0 评论 -
整除分块
博主链接for(int i=1,last;i<=n;i=last+1){ last=n/(n/i); //该区间的最后一个数 ans+=(last-i+1)*(n/i);}原创 2018-09-16 16:27:24 · 1485 阅读 · 0 评论 -
欧几里得及拓展欧几里得
博主链接欧几里得int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b); //一条语句搞定(三元运算符)装逼,跟上面略有不同,上面做到t=0,这里做到b=0}拓展欧几里得int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b); //一条语句搞定(三元运...原创 2018-09-16 16:27:30 · 960 阅读 · 0 评论 -
素数筛+埃筛模版
博主链接普通的素数筛#include<stdio.h>#include<cstring>#include<bits/stdc++.h>using namespace std;const int MAX=1e7+7;//求MAX范围内的素数long long su[MAX],cnt;bool isprime[MAX];void prim...原创 2018-09-16 16:27:36 · 1378 阅读 · 0 评论 -
欧拉函数模版
博主链接求一个数的欧拉函数ll phi(ll x){ //求1~n与n互质的个数 // phi(1323)=phi(3^3*7^2)=1323*(1-1/3)*(1-1/7) ll i, ans = x; for (i = 2; i*i <= x; i++){ if (x%i == 0) ans = ans - ans / i; while(x%...原创 2018-09-15 22:08:42 · 1309 阅读 · 0 评论 -
逆元模版(比较全)
博主链接//费马小定理求逆元ll quick_mod(ll a,ll b,ll c) //快速幂计算(a^b)%c{ ll ans = 1; while(b) { if(b&1) //相当于b%2==1 ans = (ans*a)%c; a = (a*a)%c; b>&...原创 2018-09-15 22:05:41 · 675 阅读 · 0 评论 -
莫比乌斯函数模版
博主链接//莫比乌斯打表(phi可以删除)//phi--欧拉函数表 miu--莫比乌斯函数表 fac--i最大的素因子辅助打phi表int phi[maxn],miu[maxn],fac[maxn];ll f[maxn], F[maxn];void init(){ for (int i = 1; i < maxn; ++i) fac[i] = i; phi[1]...原创 2018-09-15 21:57:37 · 1488 阅读 · 0 评论 -
矩阵快速幂模版
博主链接矩阵快速幂模版#include<bits/stdc++.h> using namespace std;int N=7;void Matrix(int (&a)[2][2],int b[2][2]){ int tmp[2][2]={0}; for(int i=0;i<2;++i) for(int j=0;j<2;++j) fo...原创 2018-09-15 21:50:10 · 543 阅读 · 0 评论 -
基数排序MSD
博主链接#include<stdio.h>#include<iostream>#include<algorithm>#include<string>#include<malloc.h>using namespace std;const int maxn=1e6+7;int arr[maxn]={12,14,54,5,6...原创 2018-09-15 21:46:45 · 1334 阅读 · 0 评论 -
浮点型数据高精度乘法
/*有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <...原创 2018-09-15 21:45:25 · 1305 阅读 · 0 评论 -
分解出一个数的所有质因子
//n为要分解的数 //Fac数组存所有质因子 //cnt为质因子个数void primeFactor(int n){ while(n%2==0){ Fac[cnt++]=2; n/=2; } // 经过第二步, 此时 n 一定为奇数 // 并且不存在偶数的素因子 // 所以我们可以跳过所有偶数 (i += 2) ...原创 2018-09-15 21:42:03 · 1987 阅读 · 0 评论 -
杜教筛--求积性函数前缀和
博主链接模版中以求欧拉函数和莫比乌斯函数前缀和为例#include<stdio.h>#include<bits/stdc++.h>#define ll long long int;#define N 2001000#define ni 500000004 //2的逆元using namespace std;const long long i...原创 2018-09-15 21:39:20 · 584 阅读 · 0 评论 -
求大数的n次方对m取模(欧拉降幂)
博主链接#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1e5 + 10;const int MOD = 1e9 + 7;char s[MAXN];...原创 2018-09-15 21:35:03 · 2960 阅读 · 2 评论 -
Miller-Rabin素性测试
博主链接/** 随机素数测试(伪素数原理理)* CALL: bool res = miller(n);* 快速测试n是否满⾜足素数的“必要”条件,出错概率极低* 对于任意奇数n > 2和正整数s,算法出错概率≤2^(-s) */ #include<stdio.h>#include<bits/stdc++.h>#define l...原创 2018-09-15 21:32:32 · 870 阅读 · 0 评论 -
线性基模板
#include&lt;stdio.h&gt;#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long int ll;const int maxn=1e5+7;const int mod=1e9+7;struct Linear_Basis{ ll b[63],nb[63],tot; //b为线性基 ...原创 2018-10-20 22:54:06 · 1669 阅读 · 0 评论