Beat the Battle tower at level 40 relatively easily. My team:
Umbreon (f) @ leftovers
Attract
Toxic
Faint Attack
Confuse Ray
Typhlosion (m) @ gold berry
Thunderpunch
Earthquake
Fire Punch
Sand-attack
Suicune @ Mint Berry
Rest
Blizzard
Surf
Sleep Talk
Typhlosion was my opener, because of his wide coverage. Thunderpunch OHKOs Gyarados leads, and does a lot of damage to Aerodactyl. Earthquake is mandatory, Fire Punch is for STAB, and Sand-attack is basically a staller.
Umbreon is brought in to wear down their lead (if Typhlosion is KOed), or switches in on their second if Typhlosion can't counter effectively without getting killed. Of course, the three nasty status conditions let me switch in on almost everything except Heracross or Machamp, who can 2HKO. Nidoking is annoying too because of Toxic immunity and Megahorn, but Typhlosion or Suicune can usually finish him with Surf.
Suicune is a last resort/cleaner-upper, and Resttalk works well in that regard. Mint Berry lets me recover from one Rest immediately, and Surf and Blizzard provide good coverage (Ice Beam cannot reliably OHKO with the strong Pokemon inside the Battle Tower).
Level 20 is exceptionally difficult, though. Aerodactyl's Dragon Rage will 2HKO almost everything, so Chansey/Blissey with Ice Beam is basically mandatory to outlast it. You need as strong of a sweeper as you can get at level 20 - Nidoking, Espeon and Aerodactyl are good, and you can occasionally find level 20 Slowbro in the Slowpoke well, so those are pretty safe bets. Breeding is your friend. With a combination of luck and more luck, I won with this team:
Blissey (f) @ leftovers (Bred a Chansey and then lavished it with haircuts and stuff. Evolved at level 19.)
Softboiled
Ice Beam
Protect
Double Team
Espeon (f) @ gold berry (Same deal.)
Psychic
Thief
Hidden Power (luckily, a reasonably powerful HP Fighting)
Detect
Nidoking (m) @ berry juice
Surf
Earthquake
Sludge Bomb
Swagger
Espeon, the fastest in the group, opens. Espeon is relatively quick, and also OHKOs dangers like Heracross. If it does get hurt, it uses its berry, and then is free to Thief off whatever item the enemy may have, like Leftovers, or another berry, providing further advantage.
Blissey goes in on every Aerodactyl and laughs as the terrible AI uses Dragon Rage over and over. A good special wall, apart from that.
Nidoking's coverage is pretty cool, especially because of the many types you have to leave out when only using three Pokemon. Surf is good for Fire and Ground-types, Earthquake for Rock and Electric, Sludge Bomb for Grass, and Swagger is a good status move. Nidoking can stand a hit, but you should take it out quickly.
It's not easy, but it is doable. Good luck - you'll need it.