Number.cRUN

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//示范整数数字的技巧,只讨论非负整数的情况

//数字长度
int NumberLength(int n)
{
    int len = 0;
    while (n > 0)
    {
        len = len + 1;
        n = n / 10;
    }
    return len;
}


//个位数
int UnitDigit(int n)
{
    return (n % 10);
}


//十位数
int TensDigit(int n)
{
    //等价于n除以10,再求个位数
	return (n/10) % 10;
}


//从个位到十位、百位;顺序获取
void Digits(int n)
{
	while (n > 0)
	{
        int digit = n % 10;
        //printf("%d", digit);
		n = n / 10;
	}
}


//数字翻转,如数字1234,翻转成4321
int RevertNumber(int n)
{
    int result = 0;
	while (n > 0)
	{
		int digit = n % 10;
        result = result * 10 + digit; //左移,数字加到个位
		n = n / 10;
	}
    return result;
}


//最大公约数,穷举
int GCD_nomal(int a, int b)
{
    int factor = (a < b) ? a : b;
    for (; factor >= 1; factor--)
    {
        if (a % factor == 0 && b % factor == 0)return factor;
    }

    return 1;
}


//最大公约数,辗转相除。递归
int GCD_recursion(int a, int b)
{
    if (a < b)return GCD_recursion(b, a); //变成a>=b的情况。和GCD_recursion(b, a % b)等价,可省略

    //考虑a>=b的情况
    if (a % b == 0) return b; //整除

    return GCD_recursion(b, a % b); //不整除,递归
}


//最大公约数,辗转相除。非递归
int GCD_no_recursion(int a, int b)
{
    int first=a, second=b;
    if (a < b)//可省略
    {
        first = b;
        second = a;
    }

    while (first % second != 0)
    {
        int temp = first;
        first = second;
        second = temp % second;
    }

	return second;
}


/*
A,B代表[0,9]之间的整数
AB = BA + 18
*/
void Game1()
{
    for (int A = 0; A <= 9; A++)
    {
        for (int B = 0; B <= 9; B++)
        {
            int AB = 10 * A + B;
            int BA = 10 * B + A;
            if (AB == (BA + 18))
            {
                printf("%d%d = %d%d + 18\n", A, B, B, A);
            }
        }
    }
}


//整数解,方程组和不等式
//已知6≤x≤30,15≤y≤36,编写程序求出满足方程2x+5y=126 的全部整数组解
void Game2()
{
    for (int x = 6; x <= 30; x++)
    {
        for (int y = 6; y <= 30; y++)
        {
            if (2 * x + 5 * y == 126)
            {
                printf("<%d,%d>\n", x, y);
            }
        }
    }
}


int main()
{
    Game1();

    Game2();

    return 0 ;

    int n = 12345678;
    int len = NumberLength(n);
    int revert = RevertNumber(n);
   
    return 0;
}