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

1019

程序员文章站 2022-05-30 13:15:15
...

超时 待修改

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define N 1010

bool cmpmin(int a,int b)
{
    return a<=b;
}
bool cmpmax(int a,int b)
{
    return a>=b;
}
int judge(char *a)
{
    if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3])
        return 0;
    else
        return 1;
}
void sub(char amax[],char amin[],char a[])
{
    int i,f=0;
    for(i=3;i>=0;i--)
    {
        amax[i]=amax[i]-f;
        f=0;
        if(amax[i]>=amin[i])
            a[i]=amax[i]-amin[i]+'0';
        else
        {
            f++;
            a[i]=amax[i]+10-amin[i]+'0';
        }
        //printf("%d %s %s %s\n",f,amax,amin,a);
    }
}
int main()
{
    char a[5],amin[5],amax[5],amin1[5],amax1[5];
    scanf("%s",a);
    if(judge(a)==0)
        printf("%s - %s = 0000",a,a);
    else
    {
        while(1)
        {
            strcpy(amax,a);
            strcpy(amin,a);


            sort(amin,amin+4,cmpmin);
            sort(amax,amax+4,cmpmax);

            strcpy(amin1,amin);
            strcpy(amax1,amax);

            sub(amax1,amin1,a); 

            //printf("%s %s %s\n",amax,amin,a);
            //return 0;
            printf("%s - %s = %s\n",amax,amin,a);
            if(strcmp(a,"6174")==0)
                break;
        }
    }
    return 0;
}