001 : //========================================
002 : // program.c --- ACM ICPC 2012 Domestic B
003 : //  Created by M.Miyazaki [2013.01.13]
004 : //========================================
005 : 
006 : #include <stdio.h>
007 : #include <stdlib.h>
008 : #include <string.h>
009 : 
010 : /**
011 :  * 数値リストの最大要素数
012 :  */
013 : #define MAX_ELEMENTS 21
014 : 
015 : /**
016 :  * 最大桁数
017 :  */
018 : #define MAX_LENGTH 6
019 : 
020 : 
021 : int main(int argumentCount, char * argumentValues[])
022 : {
023 :     int aValue;
024 :     int numberOfDigit;
025 :     
026 :     scanf("%d %d", &aValue, &numberOfDigit);
027 :     
028 :     while (aValue != 0 || numberOfDigit != 0)
029 :     {
030 :         int valueArray[MAX_ELEMENTS];
031 :         int count = 0;
032 :         int maxNumber, minNumber;
033 :         int indexOfDuplication;
034 :         
035 :         for (count = 0; count < MAX_ELEMENTS; count++)
036 :         {
037 :             valueArray[count] = -1;
038 :         }
039 :         count = 0;
040 :         valueArray[count] = aValue;
041 :         
042 :         while (1)
043 :         {
044 :             int index;
045 :             int index1, index2;
046 :             char formatString[10];
047 :             char valueString[MAX_LENGTH + 1];
048 :             
049 :             sprintf(formatString, "%%0%dd", numberOfDigit);
050 :             
051 :             sprintf(valueString, formatString, aValue);
052 :             for (index = 0; index < strlen(valueString) - 1; index++)
053 :             {
054 :                 if (valueString[index] < valueString[index + 1])
055 :                 {
056 :                     char temporaryCharacter;
057 :                     temporaryCharacter     = valueString[index];
058 :                     valueString[index]     = valueString[index + 1];
059 :                     valueString[index + 1] = temporaryCharacter;
060 :                     index = -1;
061 :                 }
062 :             }
063 :             maxNumber = atoi(valueString);
064 :             
065 :             sprintf(valueString, formatString, aValue);
066 :             for (index = 0; index < strlen(valueString) - 1; index++)
067 :             {
068 :                 if (valueString[index] > valueString[index + 1])
069 :                 {
070 :                     char temporaryCharacter;
071 :                     temporaryCharacter     = valueString[index];
072 :                     valueString[index]     = valueString[index + 1];
073 :                     valueString[index + 1] = temporaryCharacter;
074 :                     index = -1;
075 :                 }
076 :             }
077 :             minNumber = atoi(valueString);
078 :             
079 :             aValue = maxNumber - minNumber;
080 :             count++;
081 :             valueArray[count] = aValue;
082 :             
083 :             indexOfDuplication = -1;
084 :             
085 :             for (index1 = 0; index1 < count; index1++)
086 :             {
087 :                 for (index2 = index1 + 1; index2 <= count; index2++)
088 :                 {
089 :                     if (valueArray[index1] == valueArray[index2])
090 :                     {
091 :                         indexOfDuplication = index1;
092 :                         index1 = MAX_ELEMENTS;
093 :                         index2 = MAX_ELEMENTS;
094 :                     }
095 :                 }
096 :             }
097 :             
098 :             if (indexOfDuplication != -1)
099 :             {
100 :                 printf("%d ", indexOfDuplication);
101 :                 printf("%d ", valueArray[indexOfDuplication]);
102 :                 printf("%d\n", count - indexOfDuplication);
103 :                 break;
104 :             }
105 :         }
106 :         
107 :         scanf("%d %d", &aValue, &numberOfDigit);
108 :     }
109 :     
110 :     return EXIT_SUCCESS;
111 : }
112 : 

This document was generated by NanigashiBiyori on 2013/01/15 at 21:38:14.