Школа179: Разбор задачи G

https://server.179.ru/wiki     редакция: 20.08.2016 19:02:53
Информатика/Олимпиады/2008/Школьная/Разбор/G
Условия задачи седьмого тура

Возможное решение задачи:
1. Составить массив, в который занести все цифры числа.
2. Отсортировать этот массив по возрастанию.
3. Найти в этом массиве наименьшую ненулевую цифру, вывести ее.
4. Вывести все цифры, находящиеся левее нее в отсортированном массиве (это будут только нули).
5. Вывести все цифры, находящиеся правее нее в отсортированном массиве в порядке возрастания.

#include<iostream>

using namespace std;

// Функция сортировки массива по возрастанию
void sort(int A[], int size)
{
	int t;
	for(int i=size-1;i>0;--i)
	{
		for(int j=1;j<=i;++j)
		{
			if(A[j-1]>A[j])
			{
				t=A[j-1];
				A[j-1]=A[j];
				A[j]=t;
			}
		}
	}
}

int main()
{
	int n, i, j, size=0;
	int Digits[10];   // Массив для хранения цифр числа
	cin>>n;           // Считали число

        // Заполняем массив Digits цифрами числа n // Одновременно в size записываем количество цифр в n
	while(n>0)
	{
		Digits[size++]=n%10;
		n/=10;
	}

        // Сортируем массив Digits
	sort(Digits,size);

        // Ищем индекс первого ненулевого элемента в Digits
	i=0;
	while(Digits[i]==0)
		++i;

        // Выводим первый ненулевой элемент
	cout<<Digits[i];

        // Выводим все цифры до i-й
	for(j=0;j<i;++j)
		cout<<Digits[j];

        // Выводим все цифры после i-й
	for(j=i+1;j<size;++j)
		cout<<Digits[j];

	cout<<endl;
	return 0;
}