using trial and error in math problems
Solution 1:
You should notice that the number of bacteria double every 30 minutes. So, make a table:
12:00 AM - 1 bacterium
12:30 AM - 2 bacteria
01:00 AM - 4 bacteria
01:30 AM - 8 bacteria
02:00 AM - 16 bacteria
... now keep going until you hit 12 PM / 1 billion bacteria.
Solution 2:
Here's a neat method for (b) that your teacher may discuss later, but I doubt you'd be expected to come up with this method on your own.
Using the fact that $10$ doublings multiplies by $1024$ $(1$ doubling multiplies by $2,$ $2$ doublings multiplies by $4,$ $3$ doublings multiplies by $8,\,\ldots$ keep going until you get to $10$ doublings), and $1024$ is very close to being $1000$ (a $2.4$% error), we can leap-frog by taking jumps of $10$ doublings at a time:
$$10 \;\; \text{doublings corresponds to roughly} \;\; 1000 = 10^3 \;\; \text{bacteria}$$ $$20 \;\; \text{doublings corresponds to roughly} \;\; 1000000 = 10^6 \;\; \text{bacteria}$$ $$30 \;\; \text{doublings corresponds to roughly} \;\; 1000000000 = 10^9 \;\; \text{bacteria}$$ So you'll get about $1$ billion bacteria after $30$ doublings, which corresponds to $30$ half-hour periods.