摘要: 若能凑出其中一个式子,则能反演出另外一个式子 应用: HDU 1465 设g(i)表示正好有i封信装错信封 那么全部的C(n, i)*g(i)加起来正好就是所有装信的情况,总共n!(全排列)种情况 即: 代码: 阅读全文
posted @ 2017-10-13 17:50 东流vip 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 先声明,是康托,不是康娜,hhh 在我们做题中,搜索也好,动态规划也好,我们往往有时候需要用一个数字表示一种状态 比如有8个灯泡排成一排,如果你用0和1表示灯泡的发光情况 那么一排灯泡就可以转换为一个二进制数字了 比如 01100110 = 102 11110000 = 240 10101010 = 阅读全文
posted @ 2017-10-07 17:34 东流vip 阅读(232) 评论(0) 推荐(1) 编辑
摘要: 中国剩余定理: 国务院:中国油气人均剩余可采存储量仅为世界平均的6%... 咳咳,不对,不是这个 中国剩余定理,又名孙子定理: 听说过韩信点兵吗? 韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信很快说出人数:1049。 韩信一定是读过《 阅读全文
posted @ 2017-10-07 16:23 东流vip 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 如果只是求一个组合数,当然可以直接用这个公式,用循环来实现,注意不要溢出,可以边乘边除 但是如果要求求很多个组合数呢?? 一般我们用杨辉三角性质 杨辉三角上的每一个数字都等于它的左上方和右上方的和(除了边界) 第n行,第m个就是,就是C(n, m) (从0开始) 容易实现: 时间复杂度为O(n^2) 阅读全文
posted @ 2017-10-07 15:11 东流vip 阅读(350) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-10-07 14:28 东流vip 阅读(104) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2017-10-05 20:25 东流vip 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 首先,ax+by=gcd(a,b)肯定有解(相信度娘) 那么,ax+by=gcd(k*a,k*b)=gcd(a,b)*k也一定有解(解就是上面的x,y分别乘k) 我们写成ax+by=d, ( gcd(a,b)|d,即d能整除gcd(a,b) ) 现在,已知a和b,让你求一组解x,y满足ax+by=g 阅读全文
posted @ 2017-10-04 20:08 东流vip 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 记gcd(a,b)为a,b的最大公约数 记lcm(a,b)为a,b的最小公倍数 可知lcm=a*b/gcd,由于a*b可能过大,我们写成lcm=a/gcd*b 辗转相除法求gcd 递归写法: 几个小公式: gcd(ka, kb) = k * gcd(a, b) lcm(ka, kb) = k * l 阅读全文
posted @ 2017-10-04 19:40 东流vip 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1.快速幂: 当求a的b次方的时候,我们可以写一个函数一次循环求出,又可以用math文件里面的pow(double a,double b)解决 但是,当b非常大还要取模呢?O(n)的时间复杂度也不行怎么办? 可以用快速幂的方法: 要求a^b时,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^ 阅读全文
posted @ 2017-10-03 20:18 东流vip 阅读(218) 评论(0) 推荐(1) 编辑
摘要: 1.素数筛(线筛): 时间复杂度为O(n),可以筛选出n以内的所有素数,共有tot个,prime[x]==true,则x是素数 筛选原理: 任意一个数乘以比它小的素数的结果都是合数 遇到最小质因子就跳出循环,保证每个合数被其最小质因子筛去 附上代码: 利用了每个合数必有一个最小素因子。每个合数仅被它 阅读全文
posted @ 2017-10-01 15:44 东流vip 阅读(178) 评论(0) 推荐(0) 编辑