Befunge, 101 bytes
&20p>:000pv
>\1+^vp011<
| >.@>:55+%:00g+00p10g*v>10g-*
::\$_^#!:/+55p01*!`"~":<^\-g00
< |!-g02
+1< v\
Try it online! But note that it's going to get really slow once you get into the high forties. If you want to test the full range, you really need to be using a Befunge compiler.
Explanation
&20p Read N and save for later.
> Start of main loop; current target and test number on stack, initially 0.
: Duplicate the test number so we can manipulate it.
000p Initialise the sum to 0.
110p Initialise the product to 1.
> Start of inner loop.
:55+%: Modulo 10 of the test number to get the first digit.
00g+00p Add to the sum.
10g* Multiply by the product.
:"~"`!* If greater than 126, set to 0 to prevent overflows - it'll never match.
10p Update the product variable.
55+/ Divide the test number by 10 to get the next digit.
:!_ If not zero, repeat the inner loop
$ Drop the zero left over from the loop.
\::00g-\10g- Compare the sum and product with the current target.
*| Multiply the two diffs and branch; up if no match, down if either match.
\1+^ On no match, we increment the test number and repeat the main loop.
:>20g-!| With a match, we compare the current target with the saved N.
1+\v If that doesn't match, increment the current target and restart main loop.
\>.@ If it does match, we've got our result; output it and exit.