Делим все монеты на две равные кучки по 1007 монет и проводим их взвешивание. каждая кучка покажет разный вес. 1007≠1007 (для примера левая легче) теперь из каждой из двух кучек откладываем по одной монете и делим их опять на две равные части по 503 монеты. получаем 4 кучки и 2 монетки. проводим попарное взвешивание. 503=503 503=503 1 монетка≠1 монетка в этом случае берем из любой кучки монетку и взвешиваем с любой из двух монеток. 503≠503 503=503 1=1 значит фальшивая монетка легче 503=503 503≠503 1=1 значит фальшивая монетка тяжелее
: static void ToTriangle(double[,] matrix) { double n = matrix.GetLength(0); for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) { double koef = matrix[j, i] / matrix[i, i]; for (int k = i; k < n; k++) matrix[j, k] -= matrix[i, k] * koef; } } static void Print(double[,] matrix) { for (int i = 0; i < matrix.GetLength(0); i++) { for (int j = 0; j < matrix.GetLength(0); j++) Console.Write("{0:0.0}\t",matrix[i, j]); Console.WriteLine(); } Console.WriteLine(); } static void Main() { double[,] matrix = new double[3, 3];
var random = new Random(); for (int i = 0; i < matrix.GetLength(0); i++) for (int j = 0; j < matrix.GetLength(0); j++) matrix[i, j] = random.Next(1, 9);
I - A - 5
II - B - 3
III - C - 4