同余的性质

这是非常常用的东西

(a+b)%n==(a%n+b%n)%n  同加性

(a*b)%n==((a%n)*(b%n))%n  同乘性

但是,同余不满足同除性!

这点在处理涉及到排列组合结果要求余的时候千万要小心!

千万不要在做涉及除法运算的大结果式子的时候去边算边求余!

(这种一般采用素数高精法处理,不是这里的讨论范围了

贴一下代码吧:

/* 2035 */
//同余的性质
#include <stdio.h>
int main()
{
    int m,n,i;
    long s;
    while(scanf("%d %d",&m,&n),m||n)
    {
        s=1;
        for(i=1;i<=n;i++)
        {
            s=(s%1000)*(m%1000);
        }
        printf("%d\n",s%1000);
    }
    return 0;
}