If you want to be a very serious competitive programmer, I will go a bit deeper into the details of what all math you might ever need for competitive programming.
Arithmetic and Geometry:-
Integers, operations(including exponentiation), comparison
Basic property of integers(sign, parity, divisibility)
Basic modular arithmetic(addition, subtraction, multiplication, division)
Prime numbers(Its a vast topic)
Fractions and percentages
Line, line segment, angle, triangle, rectangle, square, circle(and specially way to represent them in your code)
Point, vector, coordinates in a plane
Polygon(vertex, side/edge, simple, convex, inside, area)
Euclidean distances
Pythogorean theorem(There are pretty diverse use of this theorem)
In some questions you might need Fermat’s Little Theorem, Chinese remainder theorem, or may need to use the Euler function etc. You need to get better in number theory. I have encountered some problems on codechef which need these myself.
Knowing some techniques like Euclidean Algorithm and fast exponentiation are considered to be a prerequisite in some contests.
Some computational geometry techniques like Graham Scan and convex hull.
Discrete Structures:-
Functions, Relations and Sets
Functions(surjections, injections, inverses, composition)
Relations(reflexivity, symmetry, transitivity, equivalence relations, total/linear order relations, lexicographic order)
Sets(cardinality, inclusion/exclusion, complements, Cartesian products, power sets)
Basic Logic
First-order logic
Logical connectives(including their basic properties)
Truth Tables
Universal and Existential quantification
Modus ponens and Modus tollens(Not to get intimidated by the names :P)
Proof techniques(You don’t need them too rigorously)
Basics of Counting
Counting arguments (sum and product rule, arithmetic and geometric progressions, Fibonacci numbers)
Permutations and combinations (basic definitions)
Factorial function, binomial coefficients
Inclusion-exclusion principle
Pigeonhole principle
Pascal’s identity, Binomial theorem
Solving recurrence relations
Burnside Lemma
Graphs and trees
Trees and their basic properties, rooted trees
Undirected graphs (degree, path, cycle, connectedness, Euler/Hamilton path/cycle, handshaking lemma)
Directed graphs (in-degree, out-degree, directed path/cycle, Euler/Hamilton path/cycle)
Spanning trees
Traversal strategies
‘Decorated’ graphs with edge/node labels, weights, colors
Multigraphs, graphs with self-loops
Bipartite graphs
Planar graphs
Probability theory
Linear Algebra(including but not limited to)
Matrix multiplication, exponentiation, inversion, and Gaussian elimination
Fast Fourier transform
Even though, many of these topics are not to be mastered rigorously, some are prerequisites and competitive programmers should have the basic knowledge of at least most of them to be among the top tier of programmers.
I hope this helped
Happy Coding!
More at: https://www.quora.com/What-are-the-skills-required-to-crack-Google-Code-Jam-or-Google-APAC