Skip to content

Latest commit

 

History

History
30 lines (24 loc) · 2.08 KB

File metadata and controls

30 lines (24 loc) · 2.08 KB

โจทย์ข้อนี้เป็นโจทย์คณิตศาสตร์ หากมีคนทั้งหมด $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)!}$ ได้

#include<bits/stdc++.h>	
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;	
}