Since the interviews at Google/Amazon/MS is famously hard they don't have the average developers (or shouldn't, then they have done a bad job with the recruitment). THEIR average is not the same as the average in the industry. I do think they are a bit closer to the average than they think but not very close to it.
I'd consider myself average at best and got job offers to two of those companies. I still work at one of them and have been promoted (so I can't be that terribly bad).
Honestly, reading cracking the coding interview and the algorithm design manual go a long way to summarizing relevant information you learn in college. Knowing how to write Python coupled with working through those books is probably enough to get hired like maybe 7/10 times. (I say 7 because a bad interviewer can sink your interview and there is nothing you can do about that).
My point being, is that the people that work at those companies are not dumb but that they are for normal people too. I wouldn't not apply just because you think everyone is somehow really smart.