Finding two integers that sum to a target with a constraint

Revision en2, by typedeftemplate, 2019-09-28 19:07:54

I thought of this problem after encountering a similar problem in TopCoder (many months ago — I can't find the problem anymore; if someone happens to find the problem, please let me know!), and I was wondering whether anyone has an efficient solution to it:

Given an integer N, find two positive integers A and B such that 1) A + B = N

2) Neither A nor B contain a "0" in them.

For example, if N = 12, you could return (7, 5) or (6, 6) or (4, 8), etc. But you wouldn't be able to return (10, 2).

At first thought, I was trying to just set A := N — 1 and B = 1, and decrement/increment A and B until neither had a "0" in them. But for really large cases, something like N = 1099999999999, this can take a really really large time. So then I tried checking each digit and adding 10^(k). But it gets really messy. I was wondering whether there is a nice and efficient solution to this problem, or if the best way is the way I described.

Tags #array

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English typedeftemplate 2019-09-28 19:07:54 18
en1 English typedeftemplate 2019-09-28 19:07:46 1007 Initial revision (published)