diff --git a/md/0036.md b/md/0036.md new file mode 100644 index 0000000..9cec9f3 --- /dev/null +++ b/md/0036.md @@ -0,0 +1,30 @@ +โจทย์ข้อนี้เป็นโจทย์คณิตศาสตร์ หากมีคนทั้งหมด $N$ คน เราแบ่งเป็นสองกรณีคือ +1. $N$ เป็นจำนวนคู่ เราทราบว่าทั้งสองทีมจะต้องมีสมาชิกเท่ากัน ดังนั้นจำนวนวิธีในการจัดทีมจะเท่ากับจำนวนวิธีในการเลือกคน $\frac N2$ คนจากทั้งหมด $N$ คน เพื่อมาลงในทีมแรก และให้อีก $\frac N2$ คนที่เหลืออยู่ทีมที่สอง ดังนั้นจำนวนวิธีคือ $\binom{N}{\frac N2}$ +2. $N$ เป็นจำนวนคี่ เราทราบว่าทั้งสองทีมจะต้องมีสมาชิกต่างกันหนึ่งคนพอดี ดังนั้นจะมีอีกสองกรณีย่อย นั่นคือ + - ทีมแรกมี $\frac{N-1}{2}$ คน จำนวนวิธีในการจัดทีมจะเท่ากับ $\binom{N}{\frac{N-1}2}$ + - ทีมแรกมี $\frac{N+1}{2}$ คน จำนวนวิธีในการจัดทีมจะเท่ากับ $\binom{N}{\frac{N+1}2}$ + + +แต่เราทราบว่า $\frac{N-1}{2} + \frac{N+1}{2} = N$ ดังนั้น $\binom{N}{\frac{N-1}2} = \binom{N}{\frac{N+1}2}$ + +เราสามารถคำนวน $\binom{n}{r}$ ด้วยสูตร $\binom{n}{r} = \frac{n!}{r!(n-r)!}$ ได้ + +```cpp +#include +using namespace std; + +int combo (int n, int r) { + long long result = 1; + for (int i = r+1; i <= n; i++) result *= i; + for (int i = 2; i <= n-r; i++) result /= i; + return result; +} + +int main () { + int n; cin >> n; + long long answer = combo(n, n/2); + if (n % 2 == 1) answer *= 2; + cout << answer; + return 0; +} +```