Reduce[{{a, b, c}.{1, 4, 7} == 12, ## & @@ Thread[0 <= {a, b, c} <= 1]}, {a, b, c}, Integers] (* a == 1 && b == 1 && c == 1 *) Reduce[{{a, b, c, d}.{1, 4, 5, 7} == 12, ## & @@ Thread[0 <= {a, b, c, d} <= 1]}, {a, b, c, d}, Integers] (* (a == 0 && b == 0 && c == 1 && d == 1) || (a == 1 && b == 1 && c == 0 && d == 1) *)