大数乘法,并对结果取模

long long mul_mod(long long a,long long b,long long m)      //a个b相加,结果对m取模
{
    long long t=0;
    while(b)
    {
        if(b&1)
        {
            t+= a%m;
            t%=m;
        }
        a<<=1;
        b>>=1;
        a%=m;

    }
    return t;
}


如果a与b十分大时,就必须采用这个方法了,背下。

还有种方法:

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;
    for(int i=0;i<strlen(str);i++)
    {
        remainder=((long long)remainder*10+number[i])%num;
    }
    return remainder;
}



你可能感兴趣的:(C++,ACM)