这道题的小难点主要在0上面,比如说输入3333,输出的式子就应该是3333 - 3333 = 0000.
就是三个数都应该为4位数,注意一下就OK了.
#include "iostream"
#include "string.h"
#include "vector"
#include "algorithm"
using namespace std;
vector<int> sortnum(int num);
vector<int> sortnum(int num)
{
int temp = num;
int len = 0;
int i;
vector<int> result;
while(temp!=0)
{
temp/=10;
len++;
}
for(i=0;i<(4-len);i++)
{
result.push_back(0);
}
while(len--)
{
result.push_back(num%10);
num/=10;
}
sort(result.begin(),result.end());
return result;
}
int getmax(vector<int> num)
{
int temp=0;
for(int i=3;i>=0;i--)
{
temp = temp*10 + num[i];
}
return temp;
}
int getmin(vector<int> num)
{
int temp=0;
for(int i=0;i<4;i++)
{
temp = temp*10 + num[i];
}
return temp;
}
int main()
{
int num = 3333;
int i;
int temp;
int len;
int min=0,max=0;
vector<int> vnum;
cin>>num;
while(num != 6174)
{
vnum = sortnum(num);
min = getmin(vnum);
max = getmax(vnum);
num = max - min;
if(num==0)
{
cout<<max<<" - ";
temp = min;
len = 0;
while(temp!=0)
{
temp/=10;
len++;
}
for(i=0;i<(4-len);i++)
{
cout<<"0";
}
cout<<min<<" = ";
for(i=0;i<4;i++)
{
cout<<"0";
}
break;
}
cout<<max<<" - ";
temp = min;
len = 0;
while(temp!=0)
{
temp/=10;
len++;
}
for(i=0;i<(4-len);i++)
{
cout<<"0";
}
cout<<min<<" = "<<num;
if(num!=6174)
cout<<endl;
}
return 0;
}