数学-数论
szjezoimzy
这个作者很懒,什么都没留下…
展开
-
NOJ 1030 求最大公约数
2016.10.14【题目描述】 1030.求最大公约数时限:1000ms 内存限制:10000K 总时限:3000ms描述 给你两个正整数a、b,请你编写程序求出它们最大公约数,并输出这个数 输入 两个正整数a、b输出 输出最大公约数(以回车结束)输入样例 24 36 输出样例 12【解题思路】 欧几里得算法求gcd(greatest common divisor)基于这个定理:原创 2016-10-21 23:52:00 · 283 阅读 · 0 评论 -
NOJ 1453 筛法
2016.10.10【题目描述】 1453.筛法(Sieve Method)时限:1000ms 内存限制:10000K 总时限:3000ms描述 用筛法求[a,b]中的素数。输入 2个正整数:a b。 a、b均在1000以内,且a小于等于b。 输出 [a b]区间内的所有素数,每个单独一行。输入样例 2 5输出样例 2 3 5【解题思路】 判素数,常规题。 最普通的做法就是原创 2016-10-23 21:19:33 · 302 阅读 · 0 评论 -
扩展欧几里得定理
根据贝祖定理:如果a、b是正整数,那么存在两个整数s、t使等式gcd(a,b) = sa + tb成立。我们可以用扩展欧几里得定理来找到一组s和t。如果我们找到了一组s和t使得x*a + y*b = gcd(a, b), 那么这组s和t与下一组x1*b + y1*(a % b) = gcd(a, b),这两组值有什么关系么?我们知道: a % b = a - (a/b)*b(这里的 “/” 指的是整原创 2016-11-15 15:14:32 · 535 阅读 · 0 评论 -
乘法逆元
定理:如果a和m互质,并且m > 1,那么a模m的逆元存在。且逆元在模m的完全剩余系中唯一。证明:根据贝祖定理,gcd (a, m) = 1, 存在正数 s 和 t 满足等式 sa+tm = 1,那么sa+tm ≡ 1 (mod m), 又因为 tm ≡ 0 (mod m),我们利用扩展欧几里德定理,容易找出逆元的存在void exgcd(int a,int b,int &x,int &y){原创 2016-11-15 15:17:59 · 443 阅读 · 0 评论 -
线性同余方程
对于形如ax ≡ b (mod m) 的线性同余方程,我们可以利用乘法逆元来解决。设ā是a模m的逆元,在方程两边同乘ā,我们得到 āax ≡ bā (mod m) x ≡ bā (mod m)int main(void){ int a, b, c; int in; scanf("%d%d%d", &a, &b, &c); in = inverse(a, c);原创 2016-11-15 15:20:18 · 440 阅读 · 0 评论 -
不定方程
对于不定整数方程pa+qb=c,若 c mod gcd(p, q) = 0,则该方程存在整数解,否则不存在整数解。 上面已经列出找一个整数解的方法,在找到p*a + q*b = gcd(p, q)的一组解p0,q0后,将p*a + q*b = gcd(p, q)的每个解乘上 c/gcd(p, q) 即可。 p*a + q*b = c的其他整数解满足: p = p1 + b/gcd(a, b原创 2016-11-15 15:22:18 · 683 阅读 · 0 评论 -
POJ 1061 青蛙的约会
2016.11.15【题目描述】 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同原创 2016-11-15 15:49:18 · 256 阅读 · 0 评论