繰り返す10進数
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int next( int a, int L )
{
vector<int> T(L);
for ( int i=0; i<L; i++ )
T[i] = a%10, a/=10;
sort(T.begin(),T.end());
int mx = 0;
int mn = 0;
for ( int i=0; i<L; i++ )
{
mx *= 10;
mn *= 10;
mx += T[L-i-1];
mn += T[i];
}
return mx - mn;
}
int main()
{
while ( true )
{
int a, L; cin >> a >> L;
if ( a==0 && L==0 )
break;
vector<int> A;
set<int> B;
A.push_back(a);
B.insert(a);
while ( true )
{
a = next(a,L);
if ( B.count(a)>0 )
{
int i = A.size();
int j;
for ( j=0; ; j++ )
if ( A[j]==a )
break;
cout << j << " " << a << " " << i-j << endl;
break;
}
A.push_back(a);
B.insert(a);
}
}
return 0;
}