#include #include #include #define MAX_NUM 1000000 int split_digits(int* digits, int num) { int len = 0; while (num > 0) { len++; digits[len-1] = num % 10; num /= 10; } return len; } int main(int argc, char** argv) { int digits[7] = {0}; int len; int digit = 0, i = 0; int prod = 1, num = 1; len = split_digits(digits, num); while (digit < MAX_NUM) { if (digit == 0 || digit == 9 || digit == 99 || digit == 999 || digit == 9999 || digit == 99999 || digit == 999999) /* Need to step through the array backward */ prod *= digits[len-1-i]; digit++; i++; if (i == len) { /* refill digits and reset i */ num++; i = 0; len = split_digits(digits, num); } } printf("The solution is %d\n", prod); return 0; }