Задача о квадратах - найти количество сертификатов, что получил гражданин - C#
Формулировка задачи:
Представьте себе, люди живут в квадратной стране. Все в этой стране представляет собой квадрат. Таким образом, квадратное правительство приняло закон о покупке земли. Согласно закону каждый гражданин имеет право на покупку земли. Земля продается в квадратах. Покупая квадрат земли со стороной
То есть за 344 квадрика гражданин купил два квадрата площадью
a
гражданин платитa*a
квадрика(валюта) и получает сертификат владельца. Один житель страны решил инвестировать все его N квадриков в землю. Он обычно может сделать это, покупая квадратные куски размером 1х1. В то же время гражданин просит уменьшить количество кусков, которые он покупает,чтобы уменьшить налоги.Он успешно купил землю. Итак, задача заключается в том, чтобы найти количество сертификатов что он получил. Входные данные: Единственная строка содержит положительное целое число, то есть количество квадриков, за которые гражданин купил землю. Выходные данные: Единственная строка, содержащая количество сертификатов, что он получил. ПримерПример |
Input / 344 / 4 |
Output / 3 / 1 |
5
(100/4 = 25, 25 / 2 = 5), и один квадрат площадью6
(144 квадрика = 144/4=36, 36/2 = 6). Подскажите с чего начать.Решение задачи: «Задача о квадратах - найти количество сертификатов, что получил гражданин»
textual
Листинг программы
static void Main(string[] args) { Console.WriteLine("Input numbers of quadrics "); var N = Convert.ToInt32(Console.ReadLine()) / 4; var count = GetSquareCount(N); Console.WriteLine(count); Console.ReadLine(); } private static int GetSquareCount(int N) { var n = (int)Math.Sqrt(N); var min = N; for (int i = 2; i <= n; i++) { var s = i * i; var result = (int)(N / s); var rest = N - result * s; if (rest > 0) result += GetSquareCount(rest); if (result < min) min = result; } return min; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д