A common hashing function that is used to assign memory addresses to records is
h : {possible input records} → {0, 1, ..., m - 1}
Defined by
hm(k) = k mod m
where k is an integer and m is the number of memory locations.
I am interested in using the hashing function above to assign every student in this class a number from 0 to 400. I will use the student's PID to do this.
Recall that a PID is a letter (A or U) followed by an 8-digit string. I will convert the 8-digit string into an integer k (ignoring leading zeros) then assign that student the number h401(k) = k mod 401.
For example, if your PID is A00000129, then I would hash h401(129).
(a) Is the function h401 : {all possible PIDs} → {0, 1, ..., 400} onto? Justify your answer.
(b) Use h401 to hash the PID A15078787
(c) Use h401 to hash the PID U47284106
(d) Find a different PID that will cause a collision with A15078787.