时隔两年,我终于开始写博文了.(很杂乱的总结)
程序员文章站
2022-06-19 10:42:24
1# 判断二元一次方程ax+by=c是否有整数解: c%gcd(a,b) == 0 2# ab的最小公倍数 = a*b/最大公约数 3# 最大公约数: 辗转相除法 4# n进制的转换用% / +循环/递归来解决. 5# a&1判断一个数是奇数还是偶数 6# 高精度加法,乘法原理: 7# 整数a/b向 ......
1# 判断二元一次方程ax+by=c是否有整数解: c%gcd(a,b) == 0
2# ab的最小公倍数 = a*b/最大公约数
3# 最大公约数: 辗转相除法
int gcd(int a,int b) { int r; if(a<b){ r = a; a = b; b = r; } r = a%b; while(r){ a = b; b = r; r = a%b; } return b; //注意 返回的是b 而不是r }
4# n进制的转换用% / +循环/递归来解决.
5# a&1判断一个数是奇数还是偶数
6# 高精度加法,乘法原理:
//高精度乘法 for(i=0; i<len1; ++i) for(j=k=0; j<len2; ++j){ //核心 result[i+j] = (result[i+j]+num1[i]*num2[j]+k); } len1 = len1+len2; for(j=k=0; j<len1; ++j){ t = result[j]; result[j] = (result[j]+k)%10; k = (t+k)/10; }
//一正一负的情况
//判断最高位大于0和小于零来决定借位的方式。
//正数借位是减一,负数借位是加一。
//加法核心 result[i] = (num1[i]+num2[i]+x)%10; x = (num1[i]+num2[i]+x)/10;
7# 整数a/b向上取整: ans = (a+b-1)/b