0051 - Differential II

#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;

#define DIGIT 10000000

int Alignment(int data[])	{
	int number=0, j=DIGIT;

	for (int i=0; i<8; ++i, j/=10)
		number+=data[i]*j;
	return number;
}

void Slove(int n)	{
	int number, data[8], max_number, min_number;

	for (int i=0; i<n; ++i)	{
		cin >> number;
		for (int j=0; j<8; ++j)	{
			data[j]=number%10;
			number/=10;
		}
		sort( data,data+8,greater<int>() );
		max_number=Alignment(data);
		sort(data,data+8);
		min_number=Alignment(data);
		cout << max_number-min_number << endl;
	}
}

int main(void)	{
	int n;

	cin >> n;
	Slove(n);
	return 0;
}

並び替えて桁合わせするだけ。