欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

时隔两年,我终于开始写博文了.(很杂乱的总结)

程序员文章站 2022-03-06 09:54:14
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