Mathematics
Jaehyun Park
CS 97SI
Stanford University
June 29, 2015
Outline
Algebra
Number Theory
Combinatorics
Geometry
Algebra 2
Sum of Powers
n
1
k2 =
X
n(n + 1)(2n + 1)
k=1
6
2
1
X 2
k3 =
X
k = n(n + 1)
2
Pretty useful in many random situations
Memorize above!
Algebra 3
Fast Exponentiation
Recursive computation of an :
1 n=0
a
n=1
an =
(an/2 )2 n is even
a(a(n1)/2 )2
n is odd
Algebra 4
Implementation (recursive)
double pow(double a, int n) {
if(n == 0) return 1;
if(n == 1) return a;
double t = pow(a, n/2);
return t * t * pow(a, n%2);
}
Running time: O(log n)
Algebra 5
Implementation (non-recursive)
double pow(double a, int n) {
double ret = 1;
while(n) {
if(n%2 == 1) ret *= a;
a *= a; n /= 2;
}
return ret;
}
You should understand how it works
Algebra 6
Linear Algebra
Solve a system of linear equations
Invert a matrix
Find the rank of a matrix
Compute the determinant of a matrix
All of the above can be done with Gaussian elimination
Algebra 7
Outline
Algebra
Number Theory
Combinatorics
Geometry
Number Theory 8
Greatest Common Divisor (GCD)
gcd(a, b): greatest integer divides both a and b
Used very frequently in number theoretical problems
Some facts:
gcd(a, b) = gcd(a, b a)
gcd(a, 0) = a
gcd(a, b) is the smallest positive number in {ax + by | x, y Z}
Number Theory 9
Euclidean Algorithm
Repeated use of gcd(a, b) = gcd(a, b a)
Example:
gcd(1989, 867) = gcd(1989 2 867, 867)
= gcd(255, 867)
= gcd(255, 867 3 255)
= gcd(255, 102)
= gcd(255 2 102, 102)
= gcd(51, 102)
= gcd(51, 102 2 51)
= gcd(51, 0)
= 51
Number Theory 10
Implementation
int gcd(int a, int b) {
while(b){int r = a % b; a = b; b = r;}
return a;
}
Running time: O(log(a + b))
Be careful: a % b follows the sign of a
5 % 3 == 2
-5 % 3 == -2
Number Theory 11
Congruence & Modulo Operation
x y (mod n) means x and y have the same remainder
when divided by n
Multiplicative inverse
x1 is the inverse of x modulo n if xx1 1 (mod n)
51 3 (mod 7) because 5 3 15 1 (mod 7)
May not exist (e.g., inverse of 2 mod 4)
Exists if and only if gcd(x, n) = 1
Number Theory 12
Multiplicative Inverse
All intermediate numbers computed by Euclidean algorithm
are integer combinations of a and b
Therefore, gcd(a, b) = ax + by for some integers x, y
If gcd(a, n) = 1, then ax + ny = 1 for some x, y
Taking modulo n gives ax 1 (mod n)
We will be done if we can find such x and y
Number Theory 13
Extended Euclidean Algorithm
Main idea: keep the original algorithm, but write all
intermediate numbers as integer combinations of a and b
Exercise: implementation!
Number Theory 14
Chinese Remainder Theorem
Given a, b, m, n with gcd(m, n) = 1
Find x with x a (mod m) and x b (mod n)
Solution:
Let n1 be the inverse of n modulo m
Let m1 be the inverse of m modulo n
Set x = ann1 + bmm1 (check this yourself)
Extension: solving for more simultaneous equations
Number Theory 15
Outline
Algebra
Number Theory
Combinatorics
Geometry
Combinatorics 16
Binomial Coefficients
!
n
is the number of ways to choose k objects out of n
k
distinguishable objects
same as the coefficient of xk y nk in the expansion of
(x + y)n
Hence the name binomial coefficients
Appears everywhere in combinatorics
Combinatorics 17
Computing Binomial Coefficients
Solution 1: Compute using the following formula:
!
n n(n 1) (n k + 1)
=
k k!
Solution 2: Use Pascals triangle
Can use either if both n and k are small
Use Solution 1 carefully if n is big, but k or n k is small
Combinatorics 18
Fibonacci Sequence
Definition:
F0 = 0, F1 = 1
Fn = Fn1 + Fn2 , where n 2
Appears in many different contexts
Combinatorics 19
Closed Form
Fn = (1/ 5)(n n )
= (1 + 5)/2
= (1 5)/2
Bad because and 5 are irrational
Cannot compute the exact value of Fn for large n
There is a more stable way to compute Fn
... and any other recurrence of a similar form
Combinatorics 20
Better Closed Form
" # " #" # " #n " #
Fn+1 1 1 Fn 1 1 F1
= =
Fn 1 0 Fn1 1 0 F0
Use fast exponentiation to compute the matrix power
Can be extended to support any linear recurrence with
constant coefficients
Combinatorics 21
Outline
Algebra
Number Theory
Combinatorics
Geometry
Geometry 22
Geometry
In theory: not that hard
In programming contests: more difficult than it looks
Will cover basic stuff today
Computational geometry in week 9
Geometry 23
When Solving Geometry Problems
Precision, precision, precision!
If possible, dont use floating-point numbers
If you have to, always use double and never use float
Avoid division whenever possible
Introduce small constant in (in)equality tests
e.g., Instead of if(x == 0), write if(abs(x) < EPS)
No hacks!
In most cases, randomization, probabilistic methods, small
perturbations wont help
Geometry 24
2D Vector Operations
Have a vector (x, y)
p
Norm (distance from the origin): x2 + y 2
Counterclockwise rotation by :
" #" #
cos sin x
sin cos y
Make sure to use correct units (degrees, radians)
Normal vectors: (y, x) and (y, x)
Memorize all of them!
Geometry 25
Line-Line Intersection
Have two lines: ax + by + c = 0 and dx + ey + f = 0
Write in matrix form:
" #" # " #
a b x c
=
d e y f
Left-multiply by matrix inverse
" #1 " #
a b 1 e b
=
d e ae bd d a
Memorize this!
Edge case: ae = bd
The lines coincide or are parallel
Geometry 26
Circumcircle of a Triangle
Have three points A, B, C
Want to compute P that is equidistance from A, B, C
Dont try to solve the system of quadratic equations!
Instead, do the following:
Find the (equations of the) bisectors of AB and BC
Compute their intersection
Geometry 27
Area of a Triangle
Have three points A, B, C
Want to compute the area S of triangle ABC
Use cross product: 2S = |(B A) (C A)|
Cross product:
x x2
(x1 , y1 ) (x2 , y2 ) = 1 = x1 y2 x2 y1
y1 y2
Very important in computational geometry. Memorize!
Geometry 28
Area of a Simple Polygon
Given vertices P1 , P2 , . . . , Pn of polygon P
Want to compute the area S of P
If P is convex, we can decompose P into triangles:
n1
X
2S = (Pi+1 P1 ) (Pi P1 )
i=2
It turns out that the formula above works for non-convex
polygons too
Area is the absolute value of the sum of signed area
Alternative formula (with xn+1 = x1 , yn+1 = y1 ):
n
X
2S = (xi yi+1 xi+1 yi )
i=1
Geometry 29
Conclusion
No need to look for one-line closed form solutions
Knowing how to compute (algorithms) is good enough
Have fun with the exercise problems
... and come to the practice contest if you can!
Geometry 30