Some notes from the book __ How to Think Like a Mathematician__ by Kevin Houston. I found this chapter in the book interesting because I was able to
relate to the process when solving competitive programming problems.

**Definitions**

*Exercise*- something that can be solved by a routine method*Problem*- something that will require more thought; will require the application of routine methods learned in exercises

*The best way to learn how to solve problems is to solve problems.*"

**Sample Problems**

- How many zeroes are at the end of 100! (100 factorial)
- Suppose that X and Y are two infinite sets. Find a formula that relates |X|, |Y|, | X intersection Y| and |X union Y|.
- Show that the equation x^2 + y^2 = z^n has positive integer solutions for every n = 1,2 ,3, ...

**Polya's four-step plan**

__Understanding the problem__

*Understand all the words and symbols in the problem*- Know the meaning of the symbols as well as the important definitions and theorems*Guess - use your intuition*- Make an educated guess*What do you know about the hypothesis and conclusion?*- Write down what you know about the hypothesis and conclusion*Work backwards and forwards*- You can start with the conclusion and think what it would imply.*Work with initial and special cases*- Some problems have an index (n in P3). Solve for the initial cases to get a 'feel'.*Work with a concrete case*- For abstract problems, look at a concrete case. Create instantiations of the variables. (P2)*Draw a picture*- Venn diagrams (P2)*Think about a similar problem*- Recall problems you've solved before that may be related to the problem you are solving.*Find an equivalent problem*- Reformulate a problem, say to show that two functions are equal, they can be represented as a new function with difference of zero.*Solve an easier problem*- In P1, solve 10! first to get a feel.*Rewrite in symbols or word*-

__Devising a plan__

*Break the problem into pieces*-*Find the right level*- there are many ways to approach a problem so select the right one*Give things names*- "Let X be ..."*Systematically choose a method*- A proving problem can be solved solve using different approaches.

__Executing a plan__

- Check each step - don't use intuition

__Looking back__

*Check the answer*- Test.*Find another solution**Reflect*- Think about what solved the problem.