#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NUM_BUFF_SIZE (255)
#define DIGIT_INCREASING_SUCCESS (0)
#define DIGIT_INCREASING_FAIL (-1)
void digitRepeat ( int digit, int count, char * zoutbuff)
{
memset(zoutbuff,digit+48,count);
}
void OutputDigitIncreasing(int x)
{
printf(" %d is digit increasing \n",x);
}
int IsDigitIncreasing(int inputVal)
{
int iLoop=0;
int iReturn = DIGIT_INCREASING_SUCCESS;
char numBuff[MAX_NUM_BUFF_SIZE]; // hope it's big enough;
/* zero is automatically digit increasing */
if (inputVal==0)
{
return iReturn;
}
int done=0;
for (iLoop=1; iLoop<10; iLoop++)
{
memset(numBuff,0,MAX_NUM_BUFF_SIZE);
int numDigits=1;
long sumSequence = iLoop;
while (sumSequence <= inputVal)
{
if (inputVal==sumSequence)
{
OutputDigitIncreasing(inputVal);
done=1;
break;
}
numDigits++;
digitRepeat(iLoop,numDigits,numBuff);
long longIntNum = atoi(numBuff);
sumSequence += longIntNum;
printf(" longIntNum = %ld : sumSequence = %ld \n",longIntNum,sumSequence);
}//while
if (done==1) { break; }
}// main for loop
iReturn = (done==1)? DIGIT_INCREASING_SUCCESS : DIGIT_INCREASING_FAIL;
return(iReturn);
}// IsDigitIncreasing
int main()
{
int inputValX= 102030405; //6170 = 5+55+555+5555
// 24 = 2 + 22
// 37035 = 3 +33 +333 +3333 +33333
if (IsDigitIncreasing(inputValX)==DIGIT_INCREASING_SUCCESS)
{
OutputDigitIncreasing(inputValX);
}
else
{
printf(" %ld is NOT DIGIT INCREASING \n");
}
}
Patrick B.
so then there are only 10 such sequences: 1 + 11+111+1111+ .... 2 +22+222+2222.... etc05/05/19