
数论
大章鱼(张文哲
你所做的别只停留在 还行
展开
-
ACM数论初学
ACM数论之初学原创 2019-11-20 10:11:39 · 248 阅读 · 0 评论 -
数论总结
最大公约数欧几里得不定方程扩展欧几里得不定方程欧拉定理欧拉函数费马小定理中国剩余定理威尔逊定理卢卡斯定理逆元快速幂矩阵快速幂欧拉降幂公式求解同余方程快速判定素数埃氏筛选法二元二次方程佩尔方程分解定理...原创 2019-11-05 01:28:28 · 226 阅读 · 0 评论 -
分解定理
原创 2019-11-05 01:27:48 · 394 阅读 · 0 评论 -
逆元
定义: 比如a∗b≡1(modp),那么a,b互为模n意义下的逆元。适应场景:比如你要算x/a%p,就可以改成x*b%p,其中b是a在p下的逆元。方法一:扩展欧几里得解不定方程O(log n):a*b+p*y=1,求解b最小正整数解即可;方法二:费马小定理O(log n): a*a^(p-2) = 1 mod n,b=a^(p-2) ;方法三:欧拉定理O(log mod):...原创 2019-11-05 00:35:43 · 369 阅读 · 0 评论 -
欧拉降幂公式
当x>oula(m)并且gcd(a,m)==1时,a^x = a^(k*oula(m))*a^(x%oula(m)),而a^(k*oula(m)) =1 mod m;所以如图显示:#include<cstdio>#include<cmath>int gcd(int a,int b) { return !b?a:gcd(b,a%b);}int ...原创 2019-11-04 23:53:46 · 303 阅读 · 0 评论 -
卢卡斯定理
使用算法:快速幂、逆元、组合公式实现:#include <stdio.h>using namespace std;typedef long long LL;LL POW(LL a,LL b,int p)//快速幂求逆元{ LL ans = 1; while(b){ if(b&1) ans = (an...原创 2019-11-04 23:06:32 · 230 阅读 · 0 评论 -
威尔逊定理
威尔逊定理:当p为质数时,(p−1)!≡−1 mod p 或 (p-1)!≡p-1 mod p;当p为合数时,(p-1)!≡0 mod n 。例题#include <bits/stdc++.h>using namespace std;const int maxn = 3e6 +10;const int maxm = 1e6 + 10;int v[maxn];...原创 2019-11-04 22:30:18 · 608 阅读 · 0 评论 -
快速幂
求解a^n当n为奇数时,a^n=a.a^(n-1);当n为偶数时,a^n=a^(n/2)a^(n/2);#include<cstdio>long long qpow(int x,int n){ long long d=1; while(n>0) { if(n&1)//若n为奇数 d*=x; x*=x; n>>=1;//n除二...原创 2019-11-04 22:13:48 · 133 阅读 · 0 评论 -
伪素数测试
伪素数测试:根据费马定理可知,当n为素数时,a^(n-1)=1 mod n ,那么逆过来并不成立的,那有什么用。。。。。哎!壮士请留步,逆过来的定理还是可以判定n是否为素数,虽然有错误的概率,但是,我们取两个素数作为a去测试,若n运算完都等于一,则极大的概率是素数,正确率高达99.9%,放心使用!!!当然对于那两个素数来说得特判一下,要不然会有bug。#include<cs...原创 2019-11-04 22:01:34 · 530 阅读 · 0 评论 -
中国剩余定理
中国剩余定理 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之 剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。如图:对于中国剩余定理一种是正规的解法,但时条件苛刻,要求模数之间两两互质;另外一种方法直接暴力求解,时间还过得去。。。方法一:#in...原创 2019-11-04 21:53:15 · 283 阅读 · 0 评论 -
二元二次不定方程
问题:a^2+b^2=c^2,已知a,求解b、c。原理详解#include<cstdio>int main(int argc, char const *argv[]){ int a,b,c; scanf("%d",&a); if(a%2) { int n=(a-1)/2; b=2*n*n+2*n; c=b+1; } else{ int ...原创 2019-10-28 21:38:07 · 508 阅读 · 0 评论 -
扩展欧几里得
扩展欧几里得不定方程对于ax+by=c来说,如果c%gcd(a,b)==0,则此不定方程有解。特别的,当c==1时,方程为欧几里得不定方程,当且仅当gcd(a,b)==1时,有解。#include<cstdio>int extgcd(int a,int b,int &x ,int &y){ int d=a; if(!b) { x=1,y=0;...原创 2019-10-26 19:24:21 · 156 阅读 · 0 评论 -
二元二次不定方程
勾股数:a^2+b^2=c^2,已知a 求解满足上式中正整数的b和c;网上有相应的公式,但是没有推导过程,下面是小生的推导过程,应该是好理解的。。。。。...原创 2019-10-21 11:52:48 · 751 阅读 · 0 评论 -
矩阵的幂的和
题目:给定n * n的矩阵A以及正整数k和m。求出矩阵A的幂的和。最后结果对M取余。要求:1<=n<=30;1<=k<=10^9;1<=M<=10^4输入:n = 2k = 2m = 4A = {{0,1},{1,1}}输出:{{1,2},{2,3}}对于一个矩阵的k次幂可以用快速幂在的时间内完成,但是一旦求和,复杂度...原创 2019-09-22 00:03:12 · 2018 阅读 · 0 评论 -
矩阵快速幂——Blocks
矩阵快速幂作用:用快速幂的思想来加速数列的递推题目:给定N个方块排成一列。现用红蓝绿黄四种颜色的油漆给这些方块染色。求红色方块和绿色方块的个数都为偶数的方案个数,输出答案对10007取余。其中1<=N<=10^9<<<<<首先,首先,首先,对矩阵运算以及快速幂运算不熟悉的同学,请移步到矩阵快速幂——斐波那契输入:N=2输出:...原创 2019-09-21 22:16:36 · 252 阅读 · 0 评论 -
矩阵幂——斐波那契数列
斐波那契数列定义:F0=0;F1=1;Fn+2=Fn+1 +Fn;其中0<=n<=10^16,最后结果对m=10000007取模。对于较小的n直接通过定义式递归求解就可,但是对于较大的n时,直接递归算法效率极低,当然也可以直接用埃氏筛法来打表,但是当n再大点,达到10^16的级别,就无法开这么大的数组了。那规模如此之大的问题该如何求解呢?可能也有人会想到递推式代入求解,下面就是...原创 2019-09-21 19:59:58 · 752 阅读 · 0 评论 -
欧拉函数值求解(费马小定理详解)
费马小定理:在p为素数时,对于任意的整数x来说都有x^p=x(mod p),即:x^(p-1)=1(mod p)。欧拉定理:当gcd(x,m)==1时,有x^oula(m) = 1 mod m;其中oula(m)为小于n且与n互质的数的个数,称之为欧拉函数当然大多数情况下,我们可以使用暴力的方法求解oula(m),但效率太低。假设,其中pi为m的质因数,ei为m对应pi下的指数,那么m...原创 2019-09-20 23:21:54 · 1427 阅读 · 0 评论