ACM_数学
文章平均质量分 66
tagyona
独立思考。不论是做题,还是人生。
展开
-
hdu3930 broot 离散k次根 ,离散对数
转载自:http://hi.baidu.com/fhhgoeqlilqrtxr/item/296f2319e11365ff9c778ac5/* hdu3930 broot 离散k次根 ,离散对数http://acm.hdu.edu.cn/showproblem.php?pid=3930类试题: http://acm.hdu.edu.cn/showproblem.php转载 2013-09-25 14:29:56 · 952 阅读 · 0 评论 -
2^n高精度模板(n<=16000)
#include #include typedef long long LL;#define mod 1000000000#define LENMAX 700///调试中最大n为16000int a[LENMAX];int b[LENMAX];LL dd[LENMAX<<1];int c[LENMAX];void Mul2(){ memset(dd,0,sizeof(原创 2013-08-16 21:54:05 · 632 阅读 · 1 评论 -
HDU 2899 Strange fuction(二分或三分)
通常解法是二分查找其导数为0的点,然后求最值。#include #include using namespace std;#define eps 1e-6double F(double x,double y){//求值 return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;}double f(double x){//对原创 2013-08-16 11:10:14 · 590 阅读 · 0 评论 -
解一元线性同余方程组模板
void ext_gcd(LL a,LL b,LL &d,LL &x,LL &y){ if(!b) { x=1; y=0; d=a; return ; } else { ext_gcd(b,a%b,d,y,x); y-=a/b*x; }}LL a[m原创 2013-08-13 11:28:18 · 1710 阅读 · 0 评论 -
逆元模板总结
以前一直在用逆元,没想到今天用模板卡了,还是对概念了解的不够。今天在kuangbin神的指导下,稍稍懂了一点。逆元:定义 对a∈Zm,存在b∈Zm,使得a+b ≡ 0 (mod m),则b是a的加法逆元,记b= - a。定义 对a∈Zm,存在b∈Zm,使得a×b ≡1 (mod m),则称b为a的乘法逆元。我们通常所指的是乘法逆元。然而乘法逆元的应用也需要条件:原创 2013-08-07 18:10:05 · 3215 阅读 · 0 评论 -
POJ 2417 Discrete Logging(解高次同余方程)
先奉上AC神的baby step giant step算法及其扩展介绍两种不同的模板:AC神版:#include #include #include #include using namespace std;typedef long long LL;const int maxn = 65535;struct hash{ int a,b,next;} Hash[原创 2013-07-24 22:27:27 · 1565 阅读 · 1 评论 -
中国剩余定理模板
void ext_gcd(int a,int b,int &d,int &x,int &y){ if(!b) { x=1;y=0;d=a; return ; } else { ext_gcd(b,a%b,d,y,x); y-=a/b*x; }}int a[100],m[100],M原创 2013-08-12 19:46:33 · 967 阅读 · 0 评论 -
HDU 3221 Brute-force Algorithm(矩阵求fibnacci,指数取模)
推出f(0)=a,f(1)=b,f(2)=a*b,f(3)=a^2*b^3,f(n)=.....易知a,b的指数幂成fib数列,在利用矩阵求fib时注意利用ph(p)降幂即可。水一贴~#include #include using namespace std;typedef long long LL;struct Matrix{ LL m[2][2];}d;Mat原创 2013-08-23 17:17:10 · 708 阅读 · 0 评论 -
HDU 1211 Complete the Sequence(差分方法)
第一次学习到差分这种神奇的思想。向前差分:向后差分:中心差分:详见http://rchardx.is-programmer.com/posts/16142.html先对数列进行s-1次差分,得到d[s-1][0]的值.然后将d[s-1]的数组全部赋值为d[s-1][0].然后反向推导原数列。#include using namespace原创 2013-08-11 17:24:50 · 789 阅读 · 0 评论 -
Pollard_rho算法模板(大整数的因子分解)
还是没怎么看懂Pollard_rho算法的原理,以后再来啃过。。。int pollard_rho(int n, int c){ int x, y, d, i = 1, k = 2; x = rand() % (n - 1) + 1; y = x; while (true) { ++i; x = (modular_multi(x, x, n) + c) % n; d = g原创 2013-08-09 22:27:28 · 7999 阅读 · 0 评论 -
Miller-Rabin随机性素数测试算法(Miller_Rabin模板)
转载自:http://www.dxmtb.com/blog/miller-rabbin/普通的素数测试我们有O(√ n)的试除算法。事实上,我们有O(slog³n)的算法。定理一:假如p是质数,且(a,p)=1,那么a^(p-1)≡1(mod p)。即假如p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。(费马小定理)该定理的逆命题是不一定成立的,但是转载 2013-08-09 18:11:03 · 8143 阅读 · 0 评论 -
POJ 2447 RSA
测试了一下pollard_rho中那个随机的C,时间差了有近200+ms#include #include #include #include #include #include #include #include #include #include #define oo (1<<28)#define gcc 1212321using namespace std;ty原创 2013-08-09 23:16:28 · 750 阅读 · 0 评论 -
Pollard's Rho Method
本文转载自:http://www.csh.rit.edu/~pat/math/quickies/rho/Pollard's Rho MethodIntroductionSuppose you had some large number that you knew was not a prime number and you needed to find out what its转载 2013-08-09 22:07:09 · 1347 阅读 · 0 评论 -
HDU 3187 HP Problem(欧拉函数)
之前对欧拉函数的理解太过浅显,这次学习到它的另一种写法:phi(k) = k(1-1/p1)(1-1/p2)(1-1/p3) = (p1-1)p1^x*(p2-1)p2^y*(p3-1)p3^z这题要求phi(k)=n的k,可以枚举n的所有因子i,在判断i+1是否为素数,是就加入集合。然后对集合进行dfs,保证每次不超过3个素数.(代码参考)原创 2013-08-22 14:03:59 · 615 阅读 · 0 评论 -
HDU 2973 YAPTCHA(威尔逊定理)
在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p )也可以写作:若p为质数,则p可整除(p-1)!+1对于此题,判断3i+7是否为质数即可。原创 2013-08-21 16:55:51 · 674 阅读 · 0 评论 -
HDU 1695 GCD(素因子分解+容斥原理+欧拉函数)
若(x,y)=k,则(x/k,y/k)=1.在[1,b/k],[1,d/k]中找互质的点对即可。对于1φ(y).对于y>b/k则要对y分解质因子,然后利用容斥原理找到与y不互质的x数量,再拿y相减即可。#include #include using namespace std;const int maxn=100000+5;int b,d;typedef long lon原创 2013-08-08 14:27:01 · 664 阅读 · 0 评论 -
FZU 2020 Comb(扩展欧几里德求逆元)
yimao哥的求组合数取余的模板,涨姿势了(¯﹃¯)/*组合数的计算;C(n,m)= n*(n-1)*...*(n-m+1) / m!;注意到本题,m最大为10^4,1s的时限(保守估计是10^7),所以直接计算不超时;分子: fz: 表示分子:fz= n*(n-1)*...*(n-m+1);最多10^4次乘法,边乘要边取模;分母: fm: 表示分母:fm= m*(m-1)*转载 2013-05-13 18:50:23 · 612 阅读 · 0 评论 -
HDU 2650 A math problem (高斯整数环)
涨姿势贴。详见http://blog.csdn.net/acdreamers/article/details/10008107转载 2013-08-18 16:45:00 · 645 阅读 · 0 评论 -
HDU 2620 Ice Rain(取模运算规律)
计算方法参考了http://blog.csdn.net/racebug2010/article/details/6090801这里比较有意思的小技巧是算出和i计算k/i结果相同的最大的j值d=k/i,j=k/d因为k%i可能存在余数,而j=k/d求出的则是满足k%j==0的j值所以对于x属于区间[i,j],所有y(y=d/x)值相同。#include using namespac原创 2013-08-18 15:43:33 · 889 阅读 · 0 评论 -
Stein算法——求最大公约数
Stein算法是一种计算两个数最大公约数的算法,它是针对欧几里德算法在对大整数进行运算时,需要试商导致增加运算时间的缺陷而提出的改进算法。typedef long long LL;LL gcd(LL u,LL v){ if (u == 0) return v; if (v == 0) return u; // look for factors of 2 if原创 2013-09-11 09:19:47 · 1664 阅读 · 0 评论 -
BZOJ 2820 YY的GCD(莫比乌斯函数)
给定N, M,求1以前的容斥原理解法必然TLE,这里就得用到莫比乌斯函数(了解莫比乌斯函数请戳这里)对于这题而言,枚举质数也会是TLE的节奏。。。原创 2013-09-23 09:26:02 · 5000 阅读 · 2 评论 -
HDU 1521 排列组合(指数型母函数)
指数型母函数裸题。#include #include using namespace std;const int maxn =20;int f[maxn],num[maxn];double a[maxn],b[maxn];void init(){ f[0]=1; for(int i=1;i<=10;i++) f[i]=f[i-1]*i;}int main()原创 2013-10-07 11:47:46 · 790 阅读 · 0 评论 -
线性时间内筛素数+欧拉函数+莫比乌斯函数
从别人博客里摘录过来改写的:https://quartergeek.com/sieve-prime-in-linear-time/typedef long long LL;#define mn 100000+5LL ph[mn];bool vis[mn];int primes, prime[mn];void Init(){ ph[1] = 1; primes=0;转载 2013-08-19 17:02:57 · 2003 阅读 · 0 评论 -
BZOJ 2005 [Noi2010]能量采集
以前只会素因子分解然后容斥原理的解法,今天看了这篇博客又涨姿势了.../************************************************************** Problem: 2005 User: too_weak Language: C++ Result: Accepted Time:48 ms Me原创 2013-09-20 11:38:55 · 2392 阅读 · 1 评论 -
十个利用矩阵乘法解决的经典题目
转载自matrix67.com 好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置转载 2013-09-18 19:33:20 · 783 阅读 · 0 评论 -
HDU 3307 Description has only two Sentences
#include #include using namespace std;typedef long long LL;LL gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}LL res[35][2],num;LL phi(LL x){ LL ans=x; num=0; for(LL i=2;i*i<=x;i++)原创 2013-09-19 15:41:38 · 1046 阅读 · 0 评论 -
Timus1132(二次剩余方程求解)
直接从ACdreamers神的博客里搬过来的(看原创请戳这里)题意:就是给出方程,p为素数,求在区间内的解。 这个思路很简单,详见:http://algo.ftiasch.com/tag/number-theory/#include #include #include #include #include #include using namespace转载 2013-09-19 19:47:48 · 688 阅读 · 0 评论 -
HDU 2807 The Shortest Path(3维矩阵转2维)
本题要使满足A*B=C的A,C间有一条边,关键是怎么高效计算矩阵乘法。可在等式两边同时乘上一个长为m,宽为1,且数值全为1的矩阵,将两侧均转换为 A‘ * B = C' 只需要预处理一遍即可将时间复杂度从O(n^3)降至O(n^2)#include using namespace std;const int maxn =80+5;const int inf = 1000000原创 2013-09-18 16:21:59 · 742 阅读 · 0 评论 -
HDU 1588 Gauss Fibonacci(矩阵快速幂+二分求等比数列和)
题目可以看成求因为fib可以写成A^x的形式,所以就可以将该式改写成等比数列的形式。首项:A^b公比:A^k项数:N该式写作A^b(I+A^k+(A^k)^2+(A^k)^3+'''+(A^k)^(N-1))(I表示单位矩阵)然后用二分法进行等比数列求和。#include using namespace std;typedef long long LL;原创 2013-09-16 22:57:06 · 875 阅读 · 0 评论 -
fibonacci数列的性质
转自:ACdreamers博客(请戳这里)fibonacci数列的性质:1.gcd(fib(n),fib(m))=fib(gcd(n,m))证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m时gcd(fib(n),fib(m))=gcd(fib(n-m),fib(m)),递归可求gcd(fib(n),fib(m))=gcd(fib(转载 2013-09-16 19:41:55 · 831 阅读 · 0 评论 -
斐波那契序列
[定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质其实,结合“互质”的定义,和一个很经典的算法就可以轻松证明对,就是辗转相除法互质的定义就是最大公约数为1数学归纳法是很有用的证明方法,我们接下来这个定理用数学归纳法就很好证明:[定理2]若i为奇数, f(i)*f(i)=f(i-1)*f(i+1)+1,否转载 2013-09-16 19:09:57 · 841 阅读 · 0 评论 -
反素数
转载自ACdreamers神博客(请戳这里)定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0都有g(i)则称x为反素数.性质一:一个反素数的质因子必然是从2开始连续的质数.性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....给出例题:转载 2013-09-13 19:32:13 · 703 阅读 · 0 评论 -
原根
1135 . 原根时间限制:1 秒 空间限制:65536 KB 分值: 0设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)给出1个质数P,找出P最小的原根。Input输入1个质数P(3 Output输出P最小的原根。直接应用上一篇博文的结论即可。#include #inc原创 2013-09-12 23:43:24 · 2227 阅读 · 0 评论 -
特征根方程
考虑二阶常系数线性齐次递推数列 有方程该方程称为该数列的特征方程,该方程的两个根称为数列的特征根。若特征方程有两个不相等的根则该数列的通项公式为其中为常数,由唯一确定。若特征方程有两个相等实根 则该数列的通项公式为其中为常数,由唯一确定。若特征方程有一对共轭复根情况不作要求 用特征根求解著名的斐波那契数列,其递推公式为:,,其特征方程为解转载 2013-09-11 21:16:50 · 4140 阅读 · 0 评论 -
快速求奇素数的所有原根
转载自:ACdreamers神博客(请戳这里)定理:如果p为素数,那么素数p一定存在原根,并且p的原根的个数为phi(p-1).设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1仅当指数为P-1的时候成立.(这里P是素数).求原根目前的转载 2013-09-12 22:59:16 · 7740 阅读 · 0 评论 -
高次同余方程式的解数及解法
转自ACdreamers神的博客:(请戳这里)定理一:若是k个两两互质的正整数,,则同余式 (1)与同余式组 (i=1,2,3,...,k) (2)等价,并且若用表转载 2013-09-11 15:27:57 · 5717 阅读 · 0 评论 -
POJ 2992 Divisors(阶乘的素因子分解)
优化了5遍,188MS还是没跑进第一页。。一定是姿势不对-_-#阶乘n!中的素因子的个数[n/p]+[n/p^2]+[n/p^3]+...#include #include using namespace std;const int maxn =430+5;typedef long long LL;LL C[maxn][maxn/2+10];void init(){原创 2013-08-07 07:23:10 · 783 阅读 · 0 评论 -
HDU 2837 Calculation(指数循环节)
首先有个重要公式A^x % m = A^(x%phi(m)+phi(m)) % m (x >= phi(m))(公式证明)所以在快速幂时对于每层的x要判断其是否大于要取的mod,如果大于,就要补上mod#include using namespace std;typedef long long LL;LL phi(LL x){ LL ans=x; for(LL原创 2013-08-19 13:53:53 · 1263 阅读 · 0 评论 -
【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】
博文原地址http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9曾经看过如下一个公式:以上的公式如果第一次见到,难免有不少疑惑:为什么可以这么写?限制条件为什么是x >= Phi(C),这个公式为什么正确?今天突发奇想,在纸上YY以后得到了以下证明(个人证明,如果有问题欢迎提出)定理 1:对转载 2013-08-19 12:24:39 · 678 阅读 · 0 评论 -
POJ 2356 抽屉原理
好久没写博客了,水一发=_=原题是今年的暑期训练题,由于种种太弱的原因,写不出来,后来才知道抽屉原理这种东西。http://blog.sina.com.cn/s/blog_6f71bea30100obgd.html上面链接的证明摘录下来:假定n个数为a1,a2,...,an,前n项和分别是S1、S2、...、Sn,那么如果有一个Si模n是0,就是答案,否则,n个数模n的余数只能在原创 2013-07-10 19:58:13 · 524 阅读 · 0 评论