大数同余定理

(a+b)%c=(a%c+b%c)%c

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring> 
using namespace std;
char a[1000];
int n,i;
int main()
{
	while (~scanf("%s%d",a,&n))
	{
		int m=0;
		int l=strlen(a);
		for (i=0;i<l;i++)
			m=((m*10)%n+(a[i]-'0'))%n;
		cout<<m<<endl;
	}
	return 0;
}


以下转自wiki百科"同余":http://zh.wikipedia.org/wiki/%E5%90%8C%E9%A4%98

数学上,当两个整数以同一个整数,若得相同余数,则二整数同余。同余理论常被用于数论中。最先引用同余的概念与“≡”符号者为德国数学家高斯

同余符号

两个整数ab,若它们除以正整数m所得的余数相等,则称ab对于模m同余

记作a \equiv b \pmod{m}

读作a同余于bm,或读作ab关于模m同余。

比如26 \equiv 14 \pmod{12}

同余于的符号是同余相等符号 。统一码值为 U+2261。但因为方便理由,人们有时会把它(误)写为普通等号 (=)。

整除性

a \equiv b \pmod{m} \Rightarrow c\cdot m=a-b, c \in \mathbb{Z} (即是说 a 和 b 之差是 m 的倍数)
换句话说,a \equiv b \pmod{m} \Rightarrow m \mid(a-b)[注 1]

传递性

\left. \begin{matrix}a \equiv b \pmod{m} \\b \equiv c \pmod{m}\end{matrix} \right\} \Rightarrow a \equiv c \pmod{m}

保持基本运算

\left. \begin{matrix}a \equiv b \pmod{m} \\c \equiv d\pmod{m}\end{matrix} \right\} \Rightarrow \left\{ \begin{matrix} a \pm c \equiv b \pm d \pmod{m} \\ ac \equiv bd \pmod{m} \end{matrix} \right.
这性质更可进一步引申成为这样:
a \equiv b \pmod{m} \Rightarrow \begin{cases} an \equiv bn \pmod{m}, \forall n \in \mathbb{Z} \\ a^n \equiv b^n \pmod{m}, \forall n \in \mathbb{N}^0\end{cases}

除法原理

a \equiv b \pmod{cn} \Rightarrow a \equiv b \pmod n
\left. \begin{matrix} a \equiv b \pmod{m} \\ n|m \end{matrix} \right\} \Rightarrow a \equiv b \pmod n[注 1]
\left. \begin{matrix} ac \equiv bc \pmod{m} \\ (c, m) = 1 \end{matrix} \right\} \Rightarrow a \equiv b \pmod m[注 2]

\left. \begin{matrix} a \equiv b \pmod{m_1} \\ a \equiv b \pmod{m_2} \\ \vdots \\ a \equiv b \pmod{m_n} \\ (n \ge 2) \end{matrix} \right\} \Rightarrow a \equiv b \pmod{[m_1,m_2,\cdots,m_n]}[注 3]

欧拉定理

a^{\varphi (n)} \equiv 1 \pmod{n}

威尔逊定理

(p-1)!\ \equiv\ -1\ (\mbox{mod}\ p)

整除多项式

因为\binom{t}{k} =\frac{(t)_k}{k!},而组合数整数,多项式(t)_k整除阶乘k!。

(t)_k \equiv t(t-1)(t-2)\cdots(t-k+1) \equiv 0 (mod k!)

例子

  • 自然数a的个位数字,就是求a与哪一个数对于模10同余。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值