Using System; namespace Fractions{ public struct Fraction : IComparable<Fraction> { public Fraction(int numerator, int denominator) { Numerator = numerator; Denominator = denominator; } public int Numerator; public int Denominator; public int CompareTo(Fraction other) { return (Numerator * other.Denominator).CompareTo(other.Numerator * Denominator); } } public class Program { static void Main(string[] args) { int numerator, denominator; Console.Write("Числитель первой дроби "); numerator = int.Parse(Console.ReadLine()); Console.Write("Знаменатель первой дроби "); denominator = int.Parse(Console.ReadLine()); var fraction1 = new Fraction(numerator, denominator); Console.Write("Числитель второй дроби "); numerator = int.Parse(Console.ReadLine()); Console.Write("Знаменатель второй дроби "); denominator = int.Parse(Console.ReadLine()); var fraction2 = new Fraction(numerator, denominator); var compareResult = fraction1.CompareTo(fraction2); if (compareResult < 0) Console.WriteLine("<"); else if (compareResult > 0) Console.WriteLine(">"); else // = 0 Console.WriteLine("="); } }}
Производим обратные действия: имея команды "разделить на 3", "разделить на 2" и "отнять 1", сделать из 84 львов 1.
Поскольку нам нужно минимальное количество действий, будем пробовать команды именно в том порядке, в котором они указаны выше, только сначала проверяем, можем ли мы получить число, делящееся на 3 без остатка, отняв только 1.
1) 84 делится на 3 без остатка, результат - 28.
2) Ближайший делитель 3 к 28 - это 27, получить его можем в одну команду "отнять 1".
Первый файл займет 2750/1054 =2,6 = 3 кластера(может быть только целое число кластеров).
Второй файл займет 324000/1024 = 307,4 = 308 кластеров.
ответ: 3 + 308 кластеров