同余求模定理 模板

同余定理具有可加、可减、可乘、乘方性:  

(A + B) % C = (A % C + B % C) % C;

(A - B) % C = (A % C - B % C) % C;

(A * B) % C = (A % C * B % C) % C;

(A ^ B) % C = (A^N + B^N) % C;


例如m==1234时看,取模n:

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


要是大整数的话,可以用千进制或者万进制或者更大,只需要把 *10  编程 *1000或者*10000诸如此类的


模板

#include<stdio.h>

char a[1000];//大整数
int n;//除数
int ans;//答案

int main()
{
    while(scanf("%s%d",a,&n)!=EOF)
    {
        ans=0;

        //下面是主要式子,
        for(int i=0;a[i]!='\0';i++)
            ans=((ans*10)%n+(a[i]-'0')%n)%n;

        printf("%d\n",ans);
    }

    return 0;
}


你可能感兴趣的:(同余求模定理 模板)