题目:输入一个数N(不能是1111,2222,3333这类数)然后将这个数重新排列形成一个最大的数最小的数,然后这两个数的差如果等于6174这停止,输入一个四位数n然后按要求重新排列候做差,输出每个做得差,然后换一行输出差的个数。
解题思路:定义一个函数,将n的个十百千位存入数组中,然后在分别成1000,100,10组成新的四位数。做差,当差为6174时停止。
细节处理:利用sort函数排序。
代码:#include<bits/stdc++.h>
using namespace std;
int a[4],j=0;
int f(int n)
{
int i,b,c,d;
for(i=0;i<4;i++)
{
a[i]=n%10;
n/=10;
}
sort(a,a+4);
b=a[3]*1000+a[2]*100+a[1]*10+a[0];
c=a[0]*1000+a[1]*100+a[2]*10+a[3];
d=b-c;
cout<<d<<" ";
j++;
if(d<1000)
d*=10;
if(d==6174)
{
cout<<endl<<j<<endl;
j=0;
return 0;
}
f(d);}
int main()
{
int n;
while(cin>>n)
f(n);
return 0;
}
感想:运用sort函数排序更加快捷。