微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数取模

a+b)%n=(a%n+b%n)%n

(a-b)%n=(a%n-b%n+n)%n
为什么要加n,由于a%n可能小于b%n,所以加n保证为正整数
a*b%n=(a%n*b%n)%n
这些事大整数取模的基础
int mod(char str[],int num)
{
       int number[100];
       for(int i=0;i<strlen(str);i++)
        number[i]=str[i]-'0';
       int remainder=0;
       {
             remainder=((long long)remainder*10+number[i])%num;
       }
       return remainder;
}
之所以强制转换为long long ,是为了防止乘法过程中溢出
幂取模
int pow_mod(int a,int n,int m)
       if(n==1) return a;
       else 
             int x=pow_mod(int a,int n/2,int m)
             long long x=(long long)x*x%m;
             if(n%2==1) x=(long long)x*a%m;
             return (int)x;
        }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐