Задача о квадратах - найти количество сертификатов, что получил гражданин - C#

Узнай цену своей работы

Формулировка задачи:

Представьте себе, люди живут в квадратной стране. Все в этой стране представляет собой квадрат. Таким образом, квадратное правительство приняло закон о покупке земли. Согласно закону каждый гражданин имеет право на покупку земли. Земля продается в квадратах. Покупая квадрат земли со стороной

a

гражданин платит

a*a

квадрика(валюта) и получает сертификат владельца. Один житель страны решил инвестировать все его N квадриков в землю. Он обычно может сделать это, покупая квадратные куски размером 1х1. В то же время гражданин просит уменьшить количество кусков, которые он покупает,чтобы уменьшить налоги.Он успешно купил землю. Итак, задача заключается в том, чтобы найти количество сертификатов что он получил. Входные данные: Единственная строка содержит положительное целое число, то есть количество квадриков, за которые гражданин купил землю. Выходные данные: Единственная строка, содержащая количество сертификатов, что он получил. Пример
Пример
Input / 344 / 4
Output / 3 / 1
То есть за 344 квадрика гражданин купил два квадрата площадью

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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы