// 1688. Count of Matches in Tournament #include "leetcode.h" #include /* * given an integer 'n', the number of teams in a tournament that has strange * rules: if the current number of teams is even, each team get paired with * another team. a total of 'n / 2' matches are played, and 'n / 2' teams * advance to the next round. if the current number of teams is odd, one team * randomly advances in the tournament and the rest gets paired. a total of '(n * - 1) / 2' matches are played, and '(n - 1) / 2 + 1' teams advance to the next * round. return the number of matches played in the tournament until a winner * is decided */ int numberOfMatches(int n) { int ans = 0; while (n > 1) { int tmp = !(n % 2) ? n / 2 : (n - 1) / 2; ans += tmp; n -= tmp; } return ans; } int main() { printf("%d\n", numberOfMatches(7)); // expect: 6 printf("%d\n", numberOfMatches(14)); // expect: 13 printf("%d\n", numberOfMatches(28)); // expect: 27 }