
Writing a brute force solution is not the only applicable method to automatically test your solution. For example, consider the ProductsOfDigits problem. If your solution involves lots of special cases (like mine did), submitting it without automated testing is looking for trouble. The problem has the form of "given x and k, find the smallest i such that F(k,i) = x", where the function F can be easily calculated. Thus, the method of automated testing is the following:
for each k
for each i from 0 to a big number
x = F(k,i)
j = answer of our program on x
if j>i then ERROR
if j<i and F(k,j) != x then ERROR
I think this method is quite generic (it works for problems where you have to reverse some simple operation). 