取模运算的一些性质 科学计数法 快速幂

2019-03-10 11:47:57来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、取模运算的一些性质

       (a + b) % p = (a % p + b % p) % p

       (a - b) % p = (a % p - b % p) % p  

      (a * b) % p = (a % p * b % p) % p  

      a ^ b % p = ((a % p)^b) % p  

((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p 

二、快速乘法取模

计算a*b %p 时 若a,b较大可以这样

typedef long long LL;
LL q_mul(LL a, LL b, LL p)
{ 
    LL ans = 0;
    while (b)
    {
        if(b&1) ans=(ans+a)%p;//只有b的最后一位为1时才会返回1
        //or ans=(ans+(b%2*a)%p)%p;
        a = (a +a) % p;
        b >>= 1;         //将b值向右移一位 原本是101 现在就回变成10
    }
    return ans;
 

三、快速幂

int quickPower(int a, int b)//是求a的b次方
{
    int ans = 1, base = a; 
    while(b > 0)// 
    {
        if(b & 1) 
        ans *= base;   //ans *= base%m;
        base *= base; //如果要求取模 base *=base%m
        b >>= 1;     
    }
    return ans;      //最后输出时还要对ans取模 

}

 

 

 

四、c++科学计数法

double a = 1e3; // a= 1000
double b = 2.3e2;  //b = 230
double c = -1.3e2; //c = -130

 


原文链接:https://www.cnblogs.com/vickiww/p/10500957.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:L2-003 月饼

下一篇:C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构