数论(easy版)

1、最大公因数,最小公倍数

用辗转相除法

int gcd(int a,int b)
{
  if (b==0) return a;
  else return gcd(b,a%b);
}

 

而最小公倍数=(a*b)/gcd(a,b)

2、快速幂

快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。

在结果上往往要求模某个数。

long long ksm(long long  b,long long p,long long k){
  long long  ans=1;
  while(p){
    if(p&1){
    ans=ans*b%k;
    }
    p>>=1;
    b=b*b%k;
  }
  return ans%k;
}

 

3、进制转换

进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。 基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。 位权是指,进位制中每一固定位置对应的单位值。

k进制转10进制   把每位上的数乘k^i-1

10进制转k进制 把10进位数除以k的余数得到k进制的最后一位 再用原数除以k后的数再除k得余数的倒数第二位……以此类推一直除到为一 得到k进位制数,

posted @ 2020-03-10 19:19  赵学霖  阅读(144)  评论(0编辑  收藏  举报