title: What sort of math will help me solve programming problems?
body: <p>I have been looking at various programming problems and algorithms in an effort to improve my programming and problem solving skills. But, I keep running into description like this one:</p>
  
  <p>"Let A = [a1,a2,...,an] be a permutation of integers 1,2,...,n. A pair of indices (i,j), 1&lt;=i&lt;=j&lt;=n, is an inversion of the permutation A if ai>aj. We are given integers n>0 and k>=0. What is the number of n-element permutations containing exactly k inversions?"
  (SOURCE: <a href="http://www.spoj.pl/problems/PERMUT1/" rel="nofollow">http://www.spoj.pl/problems/PERMUT1/</a>)</p>
  
  <p>What kind of math do I need to study in order for this sort of problem description to make sense to me?</p>