Given a set of n elements from the domain 1,...,m, we investigate how to arrange them in a table of size n, so that searching for an element in the table can be done in constant time. A.C. Yao has shown that this cannot be done when the domain is sufficiently large as a function of n. A. Fiet et al. have shown that this can be done when the domain is linear in the number of elements. We give a constructive solution when the domain m is polynomial in the number of elements n, and give a nonconstructive proof for m no larger than exponential in poly(n). We improve upon Yao and give better bounds on the maximum m for which implicit O(1) probe search can be done. We achieve our results by showing the tight relationship between hashing and certain encoding problems.