7.8Kпросмотров
29 августа 2025 г.
📷 ФотоScore: 8.6K
💻 Сегодня, придя с работы захотелось порешать алгоритмы Такое случается крайне редко — алгоритмы я очень не люблю. Для меня это всегда какой-то стресс и напряжение. Я быстро вхожу в азарт и очень сильно расстраиваюсь, если у меня не получается решить задачу, поэтому, обычно, обхожу это стороной, хоть это и полезно Но сегодня прям захотелось. Решала задачу дня — уровень medium Задача была такая: Алиса и Боб играют в пошаговую игру на поле, разделенном двумя дорожками цветов. На первой дорожке между Алисой и Бобом находится x цветов, а на второй — y цветов.
Игра проходит следующим образом:
📒Алиса ходит первой.
📒В каждом ходу игрок должен выбрать одну из дорожек и взять один цветок с этой стороны. В конце хода, если цветов не осталось, текущий игрок захватывает своего противника и выигрывает игру. Для заданных двух целых чисел n и m требуется вычислить количество возможных пар (x, y), удовлетворяющих условиям:
📒Алиса должна выиграть игру в соответствии с описанными правилами.
📒Количество цветов x на первой дорожке должно быть в диапазоне [1, n].
📒Количество цветов y на второй дорожке должно быть в диапазоне [1, m].
📒Выведите количество возможных пар (x, y), удовлетворяющих условиям, указанным в условии. Для меня в таких задачах самое сложное — понять сам текст. Я перечитала его раз 8, пытаясь вникнуть в суть и понять, что от меня требуется. В общей сложности, на осознание сути самой задачи у меня ушло минут 7-10 А дальше уже пошло по накатанной. Сначала, конечно решила через вложенные циклы и получила сложность алгоритма O(n²), что не прошло проверку Потом уже оптимизировала код и прошла задание. Но увидела решения в одну строку и приуныла🥲 Потратила на задачу около 30 минут. В целом, нормально, но задача достаточно простенькая и можно было решить ее гораздо быстрее Но алгоритмы никогда не были моей сильной стороной ахахахха
Так что утешаю себя тем, что вообще её решила! 🤓 Мой ответ:
function flowerGame(n: number, m: number): number { let count = 0; let x = 1; let y = 1; for (x; x<=n; x++) { if (x%2 !== 0) { count += Math.floor(m/2) } else { count += Math.ceil(m/2) } } return count;
}; Решение в одну строчку:
function flowerGame(n: number, m: number): number { return Math.floor((n * m) / 2);
}; Любите алгоритмы?