Fun fact: the P?NP problem is the reason our currency comes in 0.01,0.05,0.10,0.25,1,5,10,20,100 denominations. We can use a polynomial-time greedy algorithm to count change, starting from the highest denomination to the lowest, and we get the smallest number of coins needed to form that change (exercise to prove.)
What happens if we choose arbitrary denominations?
e.g. if you have the denominations 0.01,0.20,0.21, make 0.60 in change.
Using the greedy algorithm, you take 2(0.21)+18(0.01), or 20 coins.
But the correct solution is clearly to take 3(0.20), or 3 coins, so the greedy algorithm is no longer sufficient to find an optimal solution.
When you allow arbitrary denominations, the problem becomes NP-complete. The greedy approach is linear in the number of denominations, but this problem is linear in the value of the amount of change that must be made. The value of a number, however, is in Theta(b^n) where b is the radix and n is the number of places. So the problem is exponential in the size of the input.
So here's the challenge for all of you: if you can find a way to quickly count change in an arbitrary money system, using the least number of coins, you have proven that P=NP.