1. Делим на кучки 333, 333 и 334 монеты. Взвешиваем кучи по 333. Если они равны - монета в куче с 334. Если нет - то в той, которая легче. Дальше все аналогично: взвешиваем 2 одинаковые кучи. если они одинаковые - то монета в третьей. Иначе в легкой. 2. Далее 333/334 монеты делим на кучки по 111/112 3. 111/112 делим на кучи по 37 / 38 монет 4. кучку 37/38 монет делим на 2 кучи по 12 монет и 1 кучу 14/13 монет 5. Кучку из 12, 13 или 14 монет делим на 2 кучи по 4 монеты и одну 4-6 монет. 6. Кучку из 4-6 монет делим на 2 по 2, либо 2 по 2 и 1 оставшаяся монета. либо 3 кучки по 2. 7. Из кучек по 2 монеты выбираем 1 нефальшивую.
Док-во примерное: для однозначного определения, в какой кучке монета фальшивая, нужно делить их на 2 или 3 кучки. На 4 -уже нельзя будет однозначно определить. Каждым взвешиванием мы уменьшаем кол-во монет, из которого нужно выбрать фальшивую, в 3 раза. На последнем взвешивании должно остаться минимум 3 монеты. Т. е. 3^6-максимальное кол-во монет, из которого можно выбрать 1 фальшивую за 6 взвешиваний. Это 729, что меньше 1000. Т. е. из 1000 монет однозначно определить фальшивую можно только 7ю взвешиваниями.
Using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication4 { class Program { // Дан массив С1, С2, …, С24. В массиве есть два элемента равные 0. Заменить все элементы, стоящие между ними, на единицы static void Main(string[] args) { const int n = 24; // Размер массива int[] С = new int[n]; // Создали массив for (int i = 0; i < n; i++) // Вводим элементы массива { С[i] = int.Parse(Console.ReadLine()); }
bool check = false; // Индикатор замены (пока что выключен)
for (int i = 0; i < n; i++) // Цикл для выполнения замены { if (С[i] == 0) // Если проверемый элемент нулевой, то переулючить индикатор замены и закончить текущую иттерацию { check = !check; continue; } if (check == true) // Если индикатор замены включен, то заменяем текущий элемент С[i] = 1; }
for (int i = 0; i < n; i++) // Выводим элементы массива { Console.WriteLine(С[i]); }
Console.ReadKey(); // Ждем нажатия клавиши } } }
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку