当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 取模运算的一些性质 科学计数法 快速幂

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

2019年03月10日  | 移动技术网IT编程  | 我要评论

盘龙二手房,河北省尚义县,麦子杰个人资料

一、取模运算的一些性质

       (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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网