
数论
文章平均质量分 77
wwwiskey
学生
展开
-
素数性测试(Robin-Miller算法)
算法分类:随机算法算法原理:输入:一个大于3的奇整数n和一个大于等于1的安全参数t(用于确定测试轮数)。输出:返回n是否是素数(概率意义上的,一般误判概率小于((1/2))80)即可)。将n-1表示成2sr对i从1到t做循环做以下操作:选择一个随机整数a(2 ≤ a ≤ n−2)计算y ←转载 2012-08-16 13:27:02 · 1888 阅读 · 0 评论 -
CodeForces 75C Modified GCD 【二分+数论】
题目链接先求出a和b的最大公约数,找出其所有的因数——sqrt(n)的复杂度,涨姿势了。然后就是判断所有的因数有没有落在low,high区间里面了——二分即可(upper_bound)C++版本:#include #include #include #include #include #include using namespace std;typed原创 2013-06-24 11:07:25 · 1997 阅读 · 0 评论 -
HDU 1695 GCD 【数论,容斥原理】
求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1b和d分别除以k之后的区间里面,只需要求gcd(x, y) = 1就可以了,这样子求出的数的对数不变。这道题目还要求1-3 和 3-1 这种情况算成一种,因此只需要限制x只需要枚举x,然后确定另一个区间里面有多少个y就可以了。因此问题转化成为区间(1, d)里面与x互素的数的个数先求出x的所有质因数原创 2013-06-10 20:07:43 · 7181 阅读 · 3 评论 -
POJ 2773 Happy 2006 【数论,容斥原理+二分】
再奉上一篇容斥原理的题目,其实还是统计区间里与某个数互素的数的个数。同类型题目:【HDU 1695 GCD】【HDU 4407 SUM】这道题目只需要二分区间(1,x)的右端点x,统计(1,x)与s互素的数的个数即可。#include #include #include #include using namespace std;typedef long lon原创 2013-06-11 20:54:26 · 1444 阅读 · 0 评论 -
HDU 4407 SUM 【数论,容斥原理】
这道题目用到的知识和 【HDU 1695 GCD】是一样的。都可以抽象出一个子问题:判断一个数s同区间(x, y)里面有多少个数互素——用容斥原理可以解决。这道题目不是统计互素的个数,而是统计与s互素的数的和,其实没有区别,求出个数之后等差数列求和就可以。还有一个修改操作:由于修改的次数不是很多,可以单独考虑更改的数字——注意判重(代码中有注释)#include原创 2013-06-11 20:08:39 · 3133 阅读 · 3 评论 -
SGU 106 The equation 【扩展欧几里得算法】
欧几里得算法:(原文链接)对于等式ax+by=c,a,b,c皆为整数,c如果是gcd(a, b)的倍数,则方程有解,否则方程无解。(定理1)因为等式ax+by=gcd(a, b)必定有解(定理1),所以可以解出来,解法如下: 因为gcd(a, b) = gcd(b, a % b),所以有bx1+(a%b)y1=gcd(a,b),注意!此时x1并不等于x,y1也不等于y!这个过程可以循原创 2013-04-28 16:55:20 · 1220 阅读 · 0 评论 -
hdu 3037 Saving Beans 【大组合数取模-Lucas定理+逆元取模】
Lucas定理A、B是非负整数,p是质数。A B写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) mod p同余即:Lucas(n,m,p)=C(n%p,m%p)*Lucas(n/p,m/p,p)原创 2013-05-27 11:00:06 · 2469 阅读 · 1 评论 -
数论合集
注:本文关于素数部分属于转载,剩余部分根据网上资料总结。快速幂 a^b % klong long PowerMod(long long a, long long b, long long k) { long long tmp = a, ret = 1; while (b) { if (b & 1) ret = ret * tmp % k;原创 2012-08-22 09:38:10 · 2056 阅读 · 0 评论 -
ZOJ 1475 Ranklist
组合数学,递推很多组合数的求解都是递推方法解的,多做些题目,涨涨姿势……:i个人,排j个rank的组合数,则:i-1个人把j个rank占满了,第i个人有j种rank,所以乘以j:i-1个人把j-1个rank占满了,第i个人随便插入j-1个rank中的方案有j种则,n个人的总方案数为:组合数很大,用java大数给过的……import java.util原创 2013-04-25 16:52:42 · 1261 阅读 · 0 评论 -
HDU 4059 The Boss on Mars【容斥原理】
又是一个容斥原理,只是四次方求和的公式呵呵了。数学里面这类问题就是容斥原理么……时间太长了,竟然刚开始没有看出来,真囧!容斥类型的题目,见我博客的分类吧。#include #include #include #include #include using namespace std;typedef long long ll;#define mod 10原创 2013-11-04 22:15:18 · 1588 阅读 · 0 评论