首页 > 其他分享 >pat乙级 1019 数字黑洞

pat乙级 1019 数字黑洞

时间:2023-03-02 20:58:31浏览次数:51  
标签:pat num2 num3 int d% 乙级 ++ num 1019

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

void decline(int a[])
{
    int temp = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = i + 1; j < 4; j++)
        {
            if (a[i] < a[j])
            {
                temp = a[j];
                a[j] = a[i];
                a[i] = temp;
            }
        }
    }
}
void up(int a[])
{
    int temp = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = i + 1; j < 4; j++)
        {
            if (a[i] > a[j])
            {
                temp = a[j];
                a[j] = a[i];
                a[i] = temp;
            }
        }
    }
}
void jian(int a[], int b[], int c[])
{
    for (int i = 3; i >= 0; i--)
    {
        if (a[i] - b[i] >= 0)
        {
            c[i] = a[i] - b[i];
        }
        else
        {
            c[i] = a[i] + 10 - b[i];
            if (i != 0)
            {
                a[i - 1] = a[i - 1] - 1;
            }
        }
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    int num[4] = {0};
    int i = 3;
    int num1[4] = {0};
    int num2[4] = {0};
    int num3[4] = {0};
    int temp1[4] = {0};
    int temp2[4] = {0};
    while (n != 0)
    {
        num[i--] = n % 10;
        n = n / 10;
    }
    if (num[0] == num[1] && num[0] == num[2] && num[0] == num[3])
    {
        printf("%d%d%d%d - %d%d%d%d = 0000", num[0], num[1], num[2], num[3], num[0], num[1], num[2], num[3]);
        return 0;
    }
    for (int i = 0; i < 4; i++)
    {
        num3[i] = num[i];
    }

    do
    {
        decline(num3);
        for (int i = 0; i < 4; i++)
        {
            num1[i] = num3[i];
        }
        up(num3);
        for (int i = 0; i < 4; i++)
        {
            num2[i] = num3[i];
        }
        for (int i = 0; i < 4; i++)
        {
            temp1[i] = num1[i];
            temp2[i] = num2[i];
        }
        jian(temp1, temp2, num3);
        printf("%d%d%d%d - %d%d%d%d = %d%d%d%d\n", num1[0], num1[1], num1[2], num1[3], num2[0], num2[1], num2[2], num2[3], num3[0], num3[1], num3[2], num3[3]);
    } while (num3[0] != 6 || num3[1] != 1 || num3[2] != 7 || num3[3] != 4);
    return 0;
}

感觉写得好复杂啊 

标签:pat,num2,num3,int,d%,乙级,++,num,1019
From: https://www.cnblogs.com/Npc-Hb/p/17173410.html

相关文章