算法笔记 大数取模

如何对一个大数取模

有公式

(a + b) % m = (a % m + b % m) % m

那么一个整数例如123456可以表示为

1 * 100000 + 2 * 10000 + 3 * 1000 + 4 * 100 + 5 * 10 + 6 * 1

则123456 % m就可以转换为

((1 % m * 10 + 2) % m * 10 + 3) % m…

于是就可以对一个大整数取模。

int bigmod(char *c,int mod)
{
    int ans=0;
    int len = strlen(c);
    int i;
    for(i = 0; i < len; i++)
        ans=(ans * 10 + (c[i] - '0')) % mod;
    return ans;
}

你可能感兴趣的:(算法)