There's nothing in the question stating you can only make one pass of the data.
So, assuming it's not a mistake, you could still use a bit set but do it in groups. For the first pass, check only the numbers from zero to thirty million (roughly). Second pass, check from thirty to sixty million. And so on.
That would still allow you to find a missing number within the constraints of the question.