001 : #include <stdio.h>
002 : #include <stdlib.h>
003 : #include <string.h>
004 :
005 : #define MAX_ELEMENTS 21
006 : #define MAX_LENGTH 6
007 :
008 : int main(int argumentCount, char * argumentValues[]);
009 : int input(int * firstPointer, int * secondPointer);
010 : void perform(int aValue, int numberOfDigit);
011 : int getMaxNumber(int aValue, int numberOfDigit);
012 : int getMinNumber(int aValue, int numberOfDigit);
013 : void stringFromValueWithLength(char valueString[], int aValue, int length);
014 : int getIndexOfDuplication(int valueArray[], int maxIndex);
015 :
016 : int main(int argumentCount, char * argumentValues[])
017 : {
018 : int aValue;
019 : int numberOfDigit;
020 :
021 : while (input(&aValue, &numberOfDigit) == 1)
022 : {
023 : perform(aValue, numberOfDigit);
024 : }
025 :
026 : return EXIT_SUCCESS;
027 : }
028 :
029 : int input(int * firstPointer, int * secondPointer)
030 : {
031 : int returnValue = 1;
032 :
033 : scanf("%d %d", firstPointer, secondPointer);
034 :
035 : if (*firstPointer == 0 && *secondPointer == 0)
036 : {
037 : returnValue = 0;
038 : }
039 :
040 : return returnValue;
041 : }
042 :
043 : void perform(int aValue, int numberOfDigit)
044 : {
045 : int valueArray[MAX_ELEMENTS];
046 : int count = 0;
047 : int maxNumber, minNumber;
048 : int indexOfDuplication;
049 :
050 : for (count = 0; count < MAX_ELEMENTS; count++)
051 : {
052 : valueArray[count] = -1;
053 : }
054 : count = 0;
055 : valueArray[count] = aValue;
056 :
057 : while (1)
058 : {
059 : maxNumber = getMaxNumber(aValue, numberOfDigit);
060 : minNumber = getMinNumber(aValue, numberOfDigit);
061 :
062 : aValue = maxNumber - minNumber;
063 : count++;
064 : valueArray[count] = aValue;
065 : indexOfDuplication = getIndexOfDuplication(valueArray, count);
066 :
067 : if (indexOfDuplication != -1)
068 : {
069 : printf("%d ", indexOfDuplication);
070 : printf("%d ", valueArray[indexOfDuplication]);
071 : printf("%d\n", count - indexOfDuplication);
072 : break;
073 : }
074 : }
075 :
076 : return;
077 : }
078 :
079 : int getMaxNumber(int aValue, int numberOfDigit)
080 : {
081 : int maxNumber;
082 : int index;
083 : char valueString[MAX_LENGTH + 1];
084 :
085 : stringFromValueWithLength(valueString, aValue, numberOfDigit);
086 :
087 : for (index = 0; index < strlen(valueString) - 1; index++)
088 : {
089 : if (valueString[index] < valueString[index + 1])
090 : {
091 : char temporaryCharacter;
092 : temporaryCharacter = valueString[index];
093 : valueString[index] = valueString[index + 1];
094 : valueString[index + 1] = temporaryCharacter;
095 : index = -1;
096 : }
097 : }
098 :
099 : maxNumber = atoi(valueString);
100 :
101 : return maxNumber;
102 : }
103 :
104 : int getMinNumber(int aValue, int numberOfDigit)
105 : {
106 : int minNumber;
107 : int index;
108 : char valueString[MAX_LENGTH + 1];
109 :
110 : stringFromValueWithLength(valueString, aValue, numberOfDigit);
111 :
112 : for (index = 0; index < strlen(valueString) - 1; index++)
113 : {
114 : if (valueString[index] > valueString[index + 1])
115 : {
116 : char temporaryCharacter;
117 : temporaryCharacter = valueString[index];
118 : valueString[index] = valueString[index + 1];
119 : valueString[index + 1] = temporaryCharacter;
120 : index = -1;
121 : }
122 : }
123 :
124 : minNumber = atoi(valueString);
125 :
126 : return minNumber;
127 : }
128 :
129 : void stringFromValueWithLength(char valueString[], int aValue, int length)
130 : {
131 : char formatString[10];
132 :
133 : sprintf(formatString, "%%0%dd", length);
134 : sprintf(valueString, formatString, aValue);
135 :
136 : return;
137 : }
138 :
139 : int getIndexOfDuplication(int valueArray[], int maxIndex)
140 : {
141 : int indexOfDuplication = -1;
142 : int index1, index2;
143 :
144 : for (index1 = 0; index1 < maxIndex; index1++)
145 : {
146 : for (index2 = index1 + 1; index2 <= maxIndex; index2++)
147 : {
148 : if (valueArray[index1] == valueArray[index2])
149 : {
150 : indexOfDuplication = index1;
151 : index1 = MAX_ELEMENTS;
152 : index2 = MAX_ELEMENTS;
153 : }
154 : }
155 : }
156 :
157 : return indexOfDuplication;
158 : }
159 :
This document was generated by NanigashiBiyori on 2013/01/14 at 00:05:15.