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;
}