คณิตศาสตร์ไม่ต่อเนื่อง: ชุดสรุปเร่งรัด

สรุปสูตร ขั้นตอนวิธีทำที่สำคัญของทุกหัวข้อ และโจทย์ฝึก 8 ข้อ พร้อมเฉลยละเอียดไว้ท้ายเล่ม

โจทย์ใหม่กลับไปที่รายวิชา

ในหน้าต่างพิมพ์ ให้เลือก “บันทึกเป็น PDF” เพื่อเก็บสำเนาไว้ในอุปกรณ์ของคุณ

1สูตรและวิธีทำ

ตรรกศาสตร์ประพจน์และการพิสูจน์

แถวของตารางค่าความจริง
2ⁿ
นัยสำคัญ (ถ้า–แล้ว)
p → q ≡ ¬p ∨ q ≡ ¬q → ¬p
นิเสธของนัย
¬(p → q) ≡ p ∧ ¬q
เงื่อนไขสองทาง
p ↔ q ≡ (p → q) ∧ (q → p)
กฎของเดอมอร์แกน
¬(p ∧ q) ≡ ¬p ∨ ¬q, ¬(p ∨ q) ≡ ¬p ∧ ¬q
กฎการแจกแจง
p ∨ (q ∧ r) ≡ (p ∨ q) ∧ (p ∨ r), p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r)
นิเสธของตัวบ่งปริมาณ
¬∀x P(x) ≡ ∃x ¬P(x), ¬∃x P(x) ≡ ∀x ¬P(x)
โมดัสโพเนนส์ โมดัสโทลเลนส์
p → q, p ⊢ q; p → q, ¬q ⊢ ¬p

วิธีการ

  1. นับจำนวนตัวแปรที่ต่างกัน ตารางค่าความจริงมี 2ⁿ แถว โดยเริ่มจากแถวที่ทุกตัวเป็น 1
  2. ให้ทุกประพจน์ย่อยมีคอลัมน์ของตัวเอง และเติมคอลัมน์จากด้านในออกมาด้านนอก
  3. ใช้กฎของตัวเชื่อมแต่ละตัว: → เป็น 0 เฉพาะเมื่อ 1 → 0 และ ↔ เป็น 1 เมื่อทั้งสองข้างมีค่าเท่ากัน
  4. สำหรับความสมมูล ให้เปรียบเทียบคอลัมน์สุดท้ายทีละแถว สำหรับการอ้างเหตุผล ให้ดูเฉพาะแถวที่ทุกสมมติฐานเป็น 1
  5. การหานิเสธของข้อความที่มีตัวบ่งปริมาณ ให้ย้าย ¬ เข้าไปด้านใน สลับ ∀ กับ ∃ และใส่นิเสธให้สูตรด้านใน

เซต ความสัมพันธ์ และฟังก์ชัน

สองเซต
|A ∪ B| = |A| + |B| − |A ∩ B|
สามเซต
|A ∪ B ∪ C| = |A| + |B| + |C| − |A ∩ B| − |A ∩ C| − |B ∩ C| + |A ∩ B ∩ C|
ผลต่างและคอมพลีเมนต์
A − B = A ∩ B′, |A′| = |U| − |A|
เพาเวอร์เซตและผลคูณคาร์ทีเซียน
|𝒫(A)| = 2|A|, |A × B| = |A|·|B|
เซตย่อยขนาด k
C(n, k) = n!/(k!(n − k)!)
ฟังก์ชัน A → B
nᵐ; injective n!/(n − m)!; surjective Σ (−1)ᵏ C(n, k)(n − k)ᵐ
ความสัมพันธ์บน n สมาชิก
2n²; reflexive 2n² − n; symmetric 2n(n+1)/2
ฟังก์ชันประกอบ
(g ∘ f)(x) = g(f(x))

วิธีการ

  1. วาดแผนภาพเวนน์แล้วพิจารณาทีละบริเวณว่าบริเวณใดเป็นของนิพจน์เซต
  2. สำหรับโจทย์การนับ ให้เติมบริเวณจากตรงกลางออกไป คือทุกเซตก่อน แล้วเป็นคู่ จากนั้นเป็นเซตเดี่ยว และสุดท้ายคือด้านนอก
  3. ใช้หลักการเพิ่มเข้า–ตัดออกเพื่อตรวจสอบ: |A ∪ B| = |A| + |B| − |A ∩ B|
  4. สำหรับความสัมพันธ์ ให้ทดสอบสมบัติแต่ละข้อกับทุกคู่ และยกตัวอย่างค้านหนึ่งตัวอย่างเมื่อสมบัตินั้นไม่เป็นจริง
  5. สำหรับฟังก์ชัน ให้นับลูกศรที่ชี้เข้าแต่ละสมาชิกของ B ถ้ามากที่สุดหนึ่งลูกคือฟังก์ชันหนึ่งต่อหนึ่ง ถ้าอย่างน้อยหนึ่งลูกคือฟังก์ชันทั่วถึง

ทฤษฎีกราฟ

เล็มมาการจับมือ
Σ deg(v) = 2|E|
กราฟบริบูรณ์
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
กราฟปรกติ
|E| = n·k/2
ต้นไม้และป่า
|E| = n − 1, |E| = n − c
ใบของต้นไม้
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
ออยเลอร์
วงจร: ดีกรีเป็นคู่ทุกจุดยอด; ทางเดิน: มีดีกรีคี่พอดี 2 จุดยอด
วงจรแฮมิลตันใน Kn
(n − 1)!/2
การปรับค่าของไดก์สตรา
d(v) = min(d(v), d(u) + w(u, v))
วอล์กความยาว L
(Mᴸ)ij

วิธีการ

  1. เขียนดีกรีของทุกจุดยอด ผลบวกของดีกรีเท่ากับสองเท่าของจำนวนเส้นเชื่อม
  2. สำหรับโจทย์ออยเลอร์ ให้ตรวจว่ากราฟเชื่อมโยงกัน และนับจุดยอดที่มีดีกรีคี่
  3. สำหรับต้นไม้ ให้ใช้ว่ามี n − 1 เส้นเชื่อม และเล็มมาการจับมือ
  4. สำหรับไดก์สตรา ให้เก็บตารางระยะทางชั่วคราว และยืนยันจุดยอดที่ยังไม่ยืนยันซึ่งมีค่าน้อยที่สุดในแต่ละรอบ
  5. สำหรับต้นไม้ทอดข้ามค่าน้อยที่สุด ให้เรียงเส้นเชื่อมตามน้ำหนักและข้ามทุกเส้นที่ทำให้เกิดวัฏจักร (ครัสคัล) หรือขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น (พริม)

ทฤษฎีจำนวนและเลขคณิตมอดูลาร์

การหารที่มีเศษ
a = q·n + r, 0 ≤ r < n
ยูคลิด
gcd(a, b) = gcd(b, a mod b)
ตัวคูณร่วมน้อย
lcm(a, b) = a·b/gcd(a, b)
อินเวอร์ส
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
ความสอดคล้องเชิงเส้น
a·x ≡ b → x ≡ a⁻¹·b (mod n)
ฟังก์ชันโทเทียนต์ของออยเลอร์
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
แฟร์มา
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n

วิธีการ

  1. ลดทุกจำนวนมอดูโล n ก่อน เศษจะอยู่ระหว่าง 0 ถึง n − 1
  2. สำหรับ ห.ร.ม. ให้หารซ้ำด้วยขั้นตอนวิธีของยูคลิด เศษที่ไม่เป็นศูนย์ตัวสุดท้ายคือ ห.ร.ม.
  3. สำหรับตัวผกผัน ให้ทำขั้นตอนวิธีแบบขยาย และเก็บสัมประสิทธิ์ของ a ถ้าเป็นลบให้บวก n
  4. แก้ a·x ≡ b โดยคูณด้วย a⁻¹ รวมสองความสอดคล้องโดยเขียน x = r₁ + m₁k
  5. สำหรับเลขยกกำลัง ให้เขียนเลขชี้กำลังเป็นเลขฐานสองแล้วยกกำลังสองซ้ำ ใน RSA จะได้ d = e⁻¹ mod φ(n) โดย φ(n) = (p − 1)(q − 1)

2โจทย์ฝึก

1.ตรรกศาสตร์ประพจน์และการพิสูจน์ปานกลาง
¬(c ∧ a) ∧ b¬(c ∧ a) → ¬b¬(c ∧ a) ∧ ¬b(c ∧ a) ∧ ¬b

คุณต้องการพิสูจน์ (c ∧ a) → b ด้วยข้อขัดแย้ง ควรสมมติประโยคใดตอนเริ่มต้น ให้คลิกประโยคนั้น

(c ∧ a) → b
  1. 1¬(c ∧ a) ∧ b
  2. 2¬(c ∧ a) → ¬b
  3. 3¬(c ∧ a) ∧ ¬b
  4. 4(c ∧ a) ∧ ¬b
2.ตรรกศาสตร์ประพจน์และการพิสูจน์ยาก
pqrp → rq → rp → q111110101100011010001000

การอ้างเหตุผลที่มีสมมติฐาน p → r; q → r และบทสรุป p → q ไม่สมเหตุสมผล ให้คลิกแถวของตารางค่าความจริงที่เป็นตัวอย่างค้าน

p → rq → r∴ p → q
  1. 1p = 1, q = 1, r = 1
  2. 2p = 1, q = 1, r = 0
  3. 3p = 1, q = 0, r = 1
  4. 4p = 1, q = 0, r = 0
  5. 5p = 0, q = 1, r = 1
  6. 6p = 0, q = 1, r = 0
  7. 7p = 0, q = 0, r = 1
  8. 8p = 0, q = 0, r = 0
3.เซต ความสัมพันธ์ และฟังก์ชันปานกลาง
ULTW

การสำรวจคน 46 คนพบว่า 21 คนมีแล็ปท็อป (L) 30 คนมีแท็บเล็ต (T) และ 28 คนมีสมาร์ทวอทช์ (W) 8 คนมี L และ T 14 คนมี L และ W 17 คนมี T และ W และ 4 คนมีทั้งสามอย่าง มีกี่คนที่ไม่อยู่ในทั้งสามเซต

|U| = 46
|(L ∪ T ∪ W)′| =
4.เซต ความสัมพันธ์ และฟังก์ชันยาก
AB1234abหนึ่งต่อหนึ่ง แต่ไม่ทั่วถึงทั่วถึง แต่ไม่หนึ่งต่อหนึ่งหนึ่งต่อหนึ่งทั่วถึงไม่ใช่ทั้งสองอย่าง

แผนภาพลูกศรแสดงฟังก์ชัน f: A → B โดย A = {1, 2, 3, 4} และ B = {a, b} ให้คลิกคำอธิบายที่ตรงกับ f

f = {(1, a), (2, b), (3, b), (4, b)}
  1. 1หนึ่งต่อหนึ่ง แต่ไม่ทั่วถึง
  2. 2ทั่วถึง แต่ไม่หนึ่งต่อหนึ่ง
  3. 3หนึ่งต่อหนึ่งทั่วถึง
  4. 4ไม่ใช่ทั้งสองอย่าง
5.ทฤษฎีกราฟปานกลาง

กราฟบริบูรณ์ K6 มีวงจรแฮมิลตันที่แตกต่างกันกี่วงจร H วงจรที่ต่างกันเพียงจุดยอดเริ่มต้นหรือทิศทางนับเป็นวงจรเดียวกัน

K6
H =
6.ทฤษฎีกราฟยาก
118109132212ABCDEF

ใช้ขั้นตอนวิธีของไดก์สตราเพื่อหาความยาว d(F) ของเส้นทางที่สั้นที่สุดจาก A ไป F ในกราฟถ่วงน้ำหนัก

เริ่มต้น: Aสิ้นสุด: F
d(F) =
7.ทฤษฎีจำนวนและเลขคณิตมอดูลาร์ปานกลาง

จงแก้ 5x ≡ 1 (mod 23) ให้คำตอบ x ที่ 0 < x < 23

5x ≡ 1 (mod 23)
x =
8.ทฤษฎีจำนวนและเลขคณิตมอดูลาร์ยาก

83 เป็นจำนวนเฉพาะ ใช้ทฤษฎีบทเล็กของแฟร์มาเพื่อหา 2429909 mod 83

p = 83k = 29909
2429909 mod 83 =

3สารละลาย

1.ตรรกศาสตร์ประพจน์และการพิสูจน์

คำตอบ: (c ∧ a) ∧ ¬b

ความสมมูลเชิงตรรกะ: สูตรสองสูตรสมมูลกัน (≡) เมื่อมีค่าเท่ากันทุกแถวของตารางค่าความจริง ซ้ำซ้อน (tautology) เป็น 1 ทุกแถว ขัดแย้ง (contradiction) เป็น 0 ทุกแถว และ contingency ไม่ใช่ทั้งสองอย่าง กฎที่มีประโยชน์: กฎของเดอมอร์แกน ¬(a ∧ b) ≡ ¬a ∨ ¬b และ ¬(a ∨ b) ≡ ¬a ∧ ¬b; a → b ≡ ¬a ∨ b ≡ ¬b → ¬a (การแย้งสลับที่); ¬(a → b) ≡ a ∧ ¬b; และกฎการแจกแจง a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c)

ส่วนต่าง ๆ ของนัย

a = c ∧ a, b = b

นิเสธของนัย

¬(a → b) ≡ a ∧ ¬b = (c ∧ a) ∧ ¬b

คำตอบ

(c ∧ a) ∧ ¬b

ถ้าข้อสมมติทำให้เกิดข้อขัดแย้ง นัยนั้นต้องเป็นจริง

2.ตรรกศาสตร์ประพจน์และการพิสูจน์

คำตอบ: p = 1, q = 0, r = 1

ตัวบ่งปริมาณและการอ้างเหตุผล: ¬∀x P(x) ≡ ∃x ¬P(x) และ ¬∃x P(x) ≡ ∀x ¬P(x) ย้ายนิเสธเข้าด้านใน สลับทุกตัวบ่งปริมาณที่นิเสธผ่าน และใส่นิเสธให้สูตรด้านในด้วยกฎของประพจน์ เช่น ¬(a → b) ≡ a ∧ ¬b การอ้างเหตุผลสมเหตุสมผลเมื่อบทสรุปเป็น 1 ในทุกแถวที่สมมติฐานทั้งหมดเป็น 1 แถวเดียวที่สมมติฐานเป็นจริงแต่บทสรุปเป็นเท็จคือตัวอย่างค้านและแสดงว่าการอ้างเหตุผลนั้นไม่สมเหตุสมผล

สมมติฐานและบทสรุปทีละแถว

p = 1, q = 1, r = 1: 1 1 | 1
p = 1, q = 1, r = 0: 0 0 | 1
p = 1, q = 0, r = 1: 1 1 | 0
p = 1, q = 0, r = 0: 0 1 | 0
p = 0, q = 1, r = 1: 1 1 | 1
p = 0, q = 1, r = 0: 1 0 | 1
p = 0, q = 0, r = 1: 1 1 | 1
p = 0, q = 0, r = 0: 1 1 | 1

ตัวอย่างค้าน

p = 1, q = 0, r = 1

คำตอบ

p = 1, q = 0, r = 1

การอ้างเหตุผลรูปแบบนี้ดูเหมือนกฎที่สมเหตุสมผล แต่แถวเดียวก็เพียงพอที่จะแสดงว่าไม่ใช่

3.เซต ความสัมพันธ์ และฟังก์ชัน

คำตอบ: |(L ∪ T ∪ W)′| = 2

เซตและแผนภาพเวนน์: A ∪ B มีสมาชิกใน A หรือ B (หรือทั้งสอง) A ∩ B มีสมาชิกในทั้งสอง A − B มีสมาชิกของ A ที่ไม่อยู่ใน B และคอมพลีเมนต์ A′ คือทุกอย่างใน U ที่ไม่อยู่ใน A ในแผนภาพเวนน์ นิพจน์เซตทุกนิพจน์คือยูเนียนของบริเวณ จึงนับทีละบริเวณได้ หลักการเพิ่มเข้า–ตัดออก: |A ∪ B| = |A| + |B| − |A ∩ B| และ |A ∪ B ∪ C| = |A| + |B| + |C| − |A ∩ B| − |A ∩ C| − |B ∩ C| + |A ∩ B ∩ C|

ส่วนกลางและคู่

L ∩ T ∩ W: 4
L ∩ T เท่านั้น: 8 − 4 = 4
L ∩ W เท่านั้น: 14 − 4 = 10
T ∩ W เท่านั้น: 17 − 4 = 13

เซตเดี่ยว

L เท่านั้น: 21 − 4 − 10 − 4 = 3
T เท่านั้น: 30 − 4 − 13 − 4 = 9
W เท่านั้น: 28 − 10 − 13 − 4 = 1

คำตอบ

|L ∪ T ∪ W| = 44
|(L ∪ T ∪ W)′| = 46 − 44 = 2

คำตอบ

|(L ∪ T ∪ W)′| = 2
4.เซต ความสัมพันธ์ และฟังก์ชัน

คำตอบ: ทั่วถึง แต่ไม่หนึ่งต่อหนึ่ง

ฟังก์ชันและการนับ: ฟังก์ชัน f: A → B ให้สมาชิกทุกตัวของ A มีภาพใน B เพียงหนึ่งตัวพอดี f เป็นหนึ่งต่อหนึ่ง (injective) เมื่อสมาชิกต่างกันมีภาพต่างกัน ทั่วถึง (surjective) เมื่อสมาชิกทุกตัวของ B เป็นภาพ และหนึ่งต่อหนึ่งทั่วถึง (bijective) เมื่อเป็นจริงทั้งสองอย่าง เมื่อ |A| = m และ |B| = n มี nᵐ ฟังก์ชัน ฟังก์ชันหนึ่งต่อหนึ่ง n!/(n − m)! ฟังก์ชัน (m ≤ n) และฟังก์ชันทั่วถึง Σ (−1)ᵏ·C(n, k)·(n − k)ᵐ ฟังก์ชันโดยหลักการเพิ่มเข้า–ตัดออก |𝒫(A)| = 2ᵐ และ |A × B| = m·n

หนึ่งต่อหนึ่งหรือไม่

f(2) = f(3) = b → ไม่เป็นหนึ่งต่อหนึ่ง

ทั่วถึงหรือไม่

สมาชิกทุกตัวของ B ถูกชี้ → ทั่วถึง

คำตอบ

ทั่วถึง แต่ไม่หนึ่งต่อหนึ่ง

คำตอบ

ทั่วถึง แต่ไม่หนึ่งต่อหนึ่ง
5.ทฤษฎีกราฟ

คำตอบ: H = 60

ออยเลอร์ แฮมิลตัน และต้นไม้: กราฟเชื่อมโยงมีวงจรออยเลอร์ (ผ่านทุกเส้นเชื่อมครั้งเดียวและกลับจุดเริ่มต้น) เมื่อทุกจุดยอดมีดีกรีคู่ และมีทางเดินออยเลอร์ที่ไม่ใช่วงจรเมื่อมีจุดยอดดีกรีคี่พอดีสองจุด ทางเดินนั้นไปจากจุดยอดคี่จุดหนึ่งถึงอีกจุดหนึ่ง วงจรแฮมิลตันผ่านทุกจุดยอดครั้งเดียว Kn มีวงจรแบบนี้ (n − 1)!/2 วงจร ต้นไม้ที่มี n จุดยอดมี n − 1 เส้นเชื่อม และกราฟเชื่อมโยงที่มี m เส้นเชื่อมจะเหลือต้นไม้ทอดข้ามหลังเอาเส้นเชื่อมออก m − n + 1 เส้น

นับ

H = (6 − 1)!/2 = 120/2 = 60

คำตอบ

H = 60
6.ทฤษฎีกราฟ

คำตอบ: d(F) = 22

เส้นทางที่สั้นที่สุดและต้นไม้ทอดข้าม: ขั้นตอนวิธีของไดก์สตรายืนยันหนึ่งจุดยอดต่อรอบ: จุดยอดที่ยังไม่ยืนยันซึ่งมีระยะทางชั่วคราวน้อยที่สุด ระยะทางของมันเป็นค่าสุดท้ายแล้ว และเพื่อนบ้าน v ทุกจุดได้ d(v) = min(d(v), d(u) + w(u, v)) ขั้นตอนวิธีของครัสคัลสร้างต้นไม้ทอดข้ามค่าน้อยที่สุดโดยเลือกเส้นเชื่อมจากเบาไปหนักและข้ามเส้นที่ทำให้เกิดวัฏจักร ขั้นตอนวิธีของพริมขยายต้นไม้หนึ่งต้นจากจุดยอดเริ่มต้นโดยเพิ่มเส้นเชื่อมที่เบาที่สุดที่ออกจากต้นไม้เสมอ ต้นไม้ทอดข้ามที่มี n จุดยอดมี n − 1 เส้นเชื่อม

ไดก์สตราทีละรอบ

แต่ละบรรทัด: จุดยอดที่ยืนยัน ระยะทางสุดท้ายของมัน และเพื่อนบ้านที่ระยะทางดีขึ้น

A (0): C: 11
C (11): B: 19, E: 20
B (19): D: 29
E (20): F: 22
F (22): D: 24
D (24)

เส้นทางที่สั้นที่สุด

A → C → E → F
d(F) = 22

คำตอบ

d(F) = 22
7.ทฤษฎีจำนวนและเลขคณิตมอดูลาร์

คำตอบ: x = 14

ตัวผกผันและความสอดคล้อง: a มีตัวผกผันมอดูโล n เมื่อ gcd(a, n) = 1 เท่านั้น ขั้นตอนวิธีของยูคลิดแบบขยายเขียน 1 = s·n + t·a แล้ว a⁻¹ ≡ t (mod n) ความสอดคล้อง a·x ≡ b (mod n) ที่ gcd(a, n) = 1 มีคำตอบ x ≡ a⁻¹·b ความสอดคล้องสองข้อ x ≡ r₁ (mod m₁) และ x ≡ r₂ (mod m₂) ที่มอดูลัสเป็นจำนวนเฉพาะสัมพัทธ์กันมีคำตอบเดียวมอดูโล m₁·m₂ (ทฤษฎีบทเศษเหลือของจีน) φ(n) ของออยเลอร์นับจำนวนตั้งแต่ 1 ถึง n ที่เป็นจำนวนเฉพาะสัมพัทธ์กับ n: φ(n) = n·∏(1 − 1/p)

ตัวผกผันของ 5

r = 23, t = 0
r = 5, q = 4, t = 1
r = 3, q = 1, t = −4
r = 2, q = 1, t = 5
r = 1, q = 2, t = −9
5−1 ≡ 14 (mod 23)

แก้สมการ

x ≡ 14·1 = 14 ≡ 14 (mod 23)
ตรวจสอบ: 5·14 = 70 ≡ 1 (mod 23)

คำตอบ

x = 14
8.ทฤษฎีจำนวนและเลขคณิตมอดูลาร์

คำตอบ: 2429909 mod 83 = 72

เลขยกกำลังมอดูลาร์และ RSA: คำนวณ aᵏ mod n ด้วยการยกกำลังสองซ้ำ: เขียน k เป็นเลขฐานสอง ยกกำลังสอง ลดค่าหลังทุกขั้นตอน และคูณเลขยกกำลังที่บิตเป็น 1 แฟร์มา: aᵖ⁻¹ ≡ 1 (mod p) สำหรับจำนวนเฉพาะ p ที่หาร a ไม่ลงตัว ดังนั้นลดเลขชี้กำลังมอดูโล p − 1 ได้ RSA: เลือกจำนวนเฉพาะ p และ q, n = p·q และ φ(n) = (p − 1)(q − 1) เลขชี้กำลังสาธารณะ e เป็นจำนวนเฉพาะสัมพัทธ์กับ φ(n) และเลขชี้กำลังส่วนตัวคือ d = e⁻¹ mod φ(n) เข้ารหัสด้วย c = mᵉ mod n และถอดรหัสด้วย m = cᵈ mod n

ลดเลขชี้กำลัง

29909 mod 82 = 61
2429909 ≡ 2461 (mod 83)

เลขยกกำลังขนาดเล็ก

2461 mod 83 = 72

คำตอบ

2429909 mod 83 = 72

ExamProblems · examproblems.com/courses/discrete-mathematics