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.