Попробуйте математические уравнения для разнообразия

Закончились бесплатные истории? Вот моя Ссылка на друзья.

Это вторая запись в блоге, посвященная решению задачи с использованием математических уравнений. Здесь вы можете найти блог First Brute Force. Который также использует математические уравнения для решения проблемы.

Сегодня мы решим задачу с помощью математического уравнения. Я люблю использовать уравнения для решения программ. Вы понимаете, какое разочарование мы накопили, пытаясь решить проблему, которая занимает почти от 50 до 100 строк кода. После всей этой тяжелой работы, вложенной в решение проблемы. Вы узнаете, что есть другой способ. И вот в чем загвоздка: они решили бы проблему в двух-трех строках кода. Вот почему математические уравнения — это благословение для нас, программистов. Для каждой проблемы, с которой вы сталкиваетесь, всегда найдется способ решить ее с помощью математики.

Я опубликовал электронную книгу. Подборка 100 Java(интервью)решенных проблем программирования. Я дал четкое объяснение и код в книге. Поверьте мне, когда я говорю, что это даст толчок к получению работы в компании вашей мечты.

Нажмите на эту ссылку, чтобы перейти на целевую страницу. Это совершенно бесплатно, если вы используете Kindle Amazon. Взгляните на это! Отзывы ценятся больше всего.

Вот как одна строка кода решила следующую проблему.

Шерлок и Квадраты

Ватсон любит бросать вызов математическим способностям Шерлока. Он предоставит начальное и конечное значение, описывающее диапазон целых чисел. Шерлок должен определить количество квадратных целых чисел в этом диапазоне, включая конечные точки.

Примечание. Квадратное целое число — это целое число, являющееся квадратом целого числа, например 1 4 9 16 25 …

Формат ввода

Первая строка содержит t , количество тестовых случаев.
Каждая из следующих tстрок содержит два целых числа, разделенных пробелом, обозначающих A и B, начальное и конечное целые числа в диапазонах.

Формат вывода

Для каждого набора входных данных выведите количество квадратных целых чисел в диапазоне в новой строке.

Код

Пояснение:

Наивный подход к решению этой проблемы состоит в том, чтобы начать с A. И проверить, является ли каждое число квадратным целым числом. Это займет много времени, а сложность этого решения O ((ba) * sqrt (b)) .

Но есть более простой метод, Формула, которая уже есть. Который используется, чтобы узнать количество идеальных квадратов между заданным диапазоном.

этаж(sqrt(b)) - потолок(sqrt(a)) + 1

Мы берем слово B. Поскольку мы включаем числа перед b.

Мы берем ячейку A. Поскольку мы включаем числа после

Например, пусть b = 24, a = 8. floor(sqrt(b)) = 4,
ceil(sqrt(a)) = 3. А количество квадратов равно 4 - 3 + 1
= 2. Два числа 9 и 16

Алгоритм

  • Прочтите значение T. Это количество тестовых наборов.
  • Для каждого теста. Прочтите значение a и b, которое указывает диапазон, в котором мы должны найти количество полных квадратов.

System.out.println((int)((Math.floor(Math.sqrt(b)))-(Math.ceil(Math.sqrt(a)))+1.0));

  • После сохранения значений. Распечатайте результат, введя эту формулу в функцию печати.
  • Точно так же для каждого теста выведите результат.

Работа кода

2
3 9
17 24

T=2;

Тестовый пример 1:

a=3;b=9;

Math.floor(sqrt(b))=›Math.floor(sqrt(9))=›Math.floor(3)=›3;

Math.ceil(sqrt(a))=›Math.ceil(sqrt(3))=›Math.ceil(1.732)=›2;

Math.floor(sqrt(b)) — Math.ceil(sqrt(a))=›3–2=›1

1+1=2;

количество:2; Фактические значения: (4,9);

Тестовый пример 2:

a=17;b=24;

Math.floor(sqrt(b))=›Math.floor(sqrt(24))=›Math.floor(4.89)=›4;

Math.ceil(sqrt(a))=›Math.ceil(sqrt(17))=›Math.ceil(4.12)=›5;

Math.floor(sqrt(b)) — Math.ceil(sqrt(a))=›4–5=-1;

1+1=0;

счетчик=0;

Заключение

Для проблемы не существует единого решения. Работайте над Кодексом. Поделитесь со мной своими мыслями. Эти проблемы от HackerRank.

Вы можете подписаться на House of Codes, чтобы получать обновления, когда мы публикуем новые задачи по программированию. Также вы можете отправить нам свои решения или свои идеи для любой задачи кодирования. Мы были бы рады прочитать их. ;)

Посетите предыдущую задачу, чтобы узнать о Решении поворота кругового массива.