同模余定理

同模余定理

  • 定义:

所谓的同余,顾名思义,就是许多的数被一个数 d 去除,有相同的余数。d 数学上的称谓为模。如 a = 6, b = 1, d = 5, 则我们说 a 和 b 是模 d 同余的。因为他们都有相同的余数 1 。

  • 数学上的记法为:

a≡ b(mod d)

  • 三种说法等价

(1) a 和 b 是模 d 同余的.
(2) 存在某个整数 n ,使得 a = b + nd .
(3) d 整除 a - b .

  • 定律
  • 同余公式也有许多我们常见的定律,比如相等律,结合律,交换律,传递律….如下面的表示:
  1. a≡a(mod d)
  2. a≡b(mod d)→b≡a(mod d)
  3. (a≡b(mod d),b≡c(mod d))→a≡c(mod d)
  • 如果a≡x(mod d),b≡m(mod d),则
  1. a+b≡x+m (mod d)
  2. a-b≡x-m(mod d)
  3. ab≡xm(mod d )
  • 应用

(a+b)%c=(a%c+b%c)%c;
(a-b)%c=(a%c-b%c)%c;
(ab)%c=(a%cb%c)%c;

  • 另一类考点就是对大数进行取模
    对于大数的求余,联想到进制转换时的方法,得到
    举例如下,设大数 m=1234, 模 n
    就等于

((((1 * 10) % n + 2 % n) % n * 10 % n + 3 % n) % n * 10 % n + 4 % n)%n

//(大数取余)

#include <stdio.h>  
  
char s[1000];  
int main() {  
    int i, j, k, m, n;  
    while(~scanf("%s%d", s, &n)) {  
        m = 0;  
        for(i = 0; s[i] != '\0'; i++)  
            m = ((m * 10) % n + (s[i] - '0') % n) % n;  
        printf("%d\n", m);  
    }  
    return 0;  
}  
  • 同余模定理的运算不适用于除法,对于除法取模的运算我们一般使用逆元来解决问题

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值