1.题目概述
任意一个4位自然数,四个数字任意组合,让最大数与最小数相减,得到一个新的四位数,如此循环,直到6174为止
2.思路分析
定义两个数组,其中一个数组用来存储并排序每一位分离出来的数字,并用两个循环分别计算出最小值,最大值,差来。
另一个数组用来存储差并加以保存,直到6174停止
3.代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n,i,j=0,max=0,min=0,sum=0;
vector<int>p;
vector<int>m;
while(cin>>n)
{
for(;;)
{
for(i=0;i<4;i++)
{
p.push_back(n%10);
n=n/10;
}
sort(p.begin(),p.end());
for(i=3;i>=0;i--)
{
max=p[i]+max*10;
min=p[3-i]+min*10;
}
sum=max-min;
m.push_back(sum);
n=sum;
sum=0;
j++;
p.clear();
max=0;
min=0;
if(n==6174)
break;
}
for(i=0;i<m.size();i++)
{
cout<<m[i]<<" ";
}
cout<<endl<<j<<endl;
j=0;
m.clear();
}
return 0;
}
4.感想
思路很简单,练手速