2019.4.10胡凡算法笔记

1.N位数字与数组的转化

将N位数字的每一位存储在数组中

void to_array(int n, int num[])
    {
        for (int i = 0; i < N; i++)
        {
            num[i] = n % 10;
            n = n / 10;
        }
    }

将数组中的数字组成N位数字

int to_number(int num[])
    {
        int sum = 0;
        for (int i = 0; i < N; i++)
        {
            sum = sum*10 + num[i];
        }
        return sum;
    }

2.最大公约数和最小公倍数

求a,b的最大公约数gcd(a,b)常用辗转相除法

gcd(a, b)=gcd(b, a%b)

又0和任意一个整数的最大公约数都是a,则递归边界是gcd(a,0)=a。

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

最小公倍数lcm(a, b)求解是在最大公约数的基础上,当求得最大公约数d后,可以马上得到a和b的最小公倍数是ab/d,但是由于ab可能会溢出,因此更恰当的写法是a/bd。

3.输入多组数据

输入多组数据,每组两个

while(scanf("%d%d", &m, &n) != EOF)
{...}

你可能感兴趣的:(2019.4.10胡凡算法笔记)