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进位制数,