随笔分类 - math
摘要:给定n,m,p 表示 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 usin...
阅读全文
摘要:插板法的条件(1)每个元素都是相同的(2)分成的组,每组的元素不为空就比如下面这个例子,分出来的组的元素是不为空的将10个相同的球放到3个不同的篮子里面去,每个篮子至少一个,问有多少种放法0-0-0-0-0-0-0-0-0-0 0代表球,-代表板子, 将9个板插入到10个球中, 我们只要从中选出...
阅读全文
摘要:1 LL MyPow(LL a, LL b) 2 { 3 LL ret = 1; 4 while (b) 5 { 6 if (b & 1) 7 ret = ret * a % MOD; 8 a = a * a % MO...
阅读全文
摘要:给定一个k表示颜色的种类从1到k然后接下来k行, 每行一个数字, 代表该颜色的球有多少个这些球都放在一个包中,然后依次拿出。 要求颜色i的最后一个球, 必须要排在颜色i+1的最后一个球前面, 1 2 #include 3 #include 4 #include 5 #include 6 #...
阅读全文
摘要:如果a*b 与 1 同模p, 那么我们就说b是a模p的乘法逆元如下图,因为是mod p , 所以乘以ab,相当于乘以1那么如果求乘法逆元呢, 如果p是素数, 那么根据费马小定理, 即所以a模p的乘法逆元是a^(p-2)如果p不是素数, 那么可以用扩展欧几里得求出。下面是组合数取模使用到乘法逆元 1...
阅读全文
摘要:如果p是素数,且a%p!=0, 那么证明:因为gcd(p,a)=1, 所以 lcm(p,a) = p*a设 1p-1根据模的性质,如果,则所以因为两边除去(p-1)!得所以成立根据这个,我们可以判断一个数不是素数。 如果不满足这个,那么就不是素数但是不能用这个来判断一个数是不是素数,因为有不是素数的...
阅读全文
摘要:给定 两个杯子,容量分别分Ca,Cb, 要我们用这两个瓶子倒来倒去,得到某个瓶子里装有N的水而且给的数据保证 Cb > N,且Ca,Cb互质那么我们肯定可以在容量为Cb的杯子里得到N的水Ca与Cb的最小公倍数是Ca*Cb我们设ri ri)那么 那么 Ca*(rj-ri) %Cb =0 与 Ca与Cb...
阅读全文
摘要:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1732给定我们一个n, 要找到两个数的集合,使得这些书的最小公倍数(LCM)为n,由于有很多这样的集合,我们...
阅读全文
摘要:勾股数组设三元组(a,b,c)满足a^2 + b^2 = c^2的勾股数组,那么是否存在无穷多个勾股数组呢,答案是肯定的,将三元组乘以d,可以得到新的三元组(da,db,dc) 即(da)^2 + (db)^2 = (dc)^2 --> (a^2+b^2) *d^2 =c^2 * d^2d的取值是任...
阅读全文
摘要:要我们求小于n并且不与n互素的数字的和, 那么可以转化为1->(n-1)的和减去小于n且与n互素的数字的和首先,有gcd(n,i)=1, 那么gcd(n,n-i)=1, 这是因为如果a%s=0, b%s=0, 那么(a-b)%s=0所以gcd(n,i)=1, 那么gcd(n,n-i)=1, 如果gc...
阅读全文
摘要:给定整数n,那么n的唯一的分解式如下欧拉函数的定义:phi(n) 为1->n中与n互素的数的个数。与n互素,就与所有n的所有素数因子pi互素, 与pi互素和不是pi的倍数是等价的那么可以用容斥定理来求解phi(n),从n个数中减去是1个素因子倍数的个数,然后加上同时是2个素因子倍数的个数,然后减去同...
阅读全文
摘要:由于棋盘只有两行,所以如果第i列的骨牌竖着放,那么就转移为第1列到第i-1列骨牌有多少种摆法如果第一行第i列骨牌横着放,那么第二行第i列也要横着放,那么就转移为了第1列到第i-2列骨牌有多少种方法dp[i] = dp[i-1] + dp[i-2],但是列数太多了。 这种递推的算式可以用矩阵快速幂来优...
阅读全文
摘要:求解线性方程,首先要判断线性方程有没有解如果,说明方程有解我们可以先用扩展欧几里得求解方程因为即根据多项式恒等定理,最后化简得到 所以,当求出最大公约数时,,我们让x=1,y=0,求出一组解,然后递归返回时,根据上面的递推,不断递推出解,从而最终求的 的解 从而的解也可以求的。LL ...
阅读全文
摘要:筛法求素数的原理是这样的,先找到第一个素数,然后将第一个素数的倍数都去掉,然后找到第二个素数,然后将第二个素数的倍数都去掉。筛法求素数可以很容易求得小于n的所有素数。如果要求第n个素数,那么就要用素数定理,求得第n个素数所在的范围,然后再用筛法。#include #include #includ...
阅读全文
摘要:康托展开:给定一个排列(由n个数排列而成),我们可以计算出该排列在由n个数组成的所有排列中排名第几(按字典序),这就是康托展开。比如由4个数1,2,3,4组成排列那么2413在所有的排列中排第几呢?首先计算第一位数字比2小的排列有多少种,即 1 * fac[3],怎么得来的呢?首先比2小的数字只有1...
阅读全文
摘要:a*b^n(mod(b-1) =a(mod(b-1)http://acm.timus.ru/problem.aspx?space=1&num=1104 1 #include 2 #include 3 4 char str[1000000 + 10]; 5 6 int CharToInt(ch...
阅读全文
摘要:当要求递推数列的第n项且n很大时,怎么快速求得第n项呢?可以用矩阵快速幂来加速计算。我们可以用矩阵来表示数列递推公式比如fibonacci数列 可以表示为 [f(n) f(n-1)] = [f(n-1) f(n-2)] [ 1 1 ] [...
阅读全文
摘要:方程ax + by = c是否有解,当且仅当c是gcd(a,b)的倍数时,方程有解(根据数论中的贝祖定理)。设t = c / gcd(a,b), 我们可以用扩展欧几里得求出方程ax + by = gcd(a,b)的一组解(x1,y1)那么方程ax + by = c的一组解是(tx1,ty1) 设为...
阅读全文

浙公网安备 33010602011771号