Произведение последовательных чисел java

Произведение двух последовательных чисел Фибоначчи — время ожидания кода

Я пытаюсь решить продукт последовательных чисел Фибоначчи на Codewars в Java. Примеры тестов работают нормально, но когда я нажимаю «Попытка», время ожидания истекает.

В чем может быть моя ошибка?

public class ProdFib < public static long[] productFib(long prod) < int a = 0; int ta, ta2= 0; int a2 = 1; while (a * a2 ; return re; > if(a * a2 > prod)< long[] re = new long[]; return re; > > return null; > > 

3 ответа

Ваша проблема в том, что вы определяете свои переменные как int вместо long ,

Если вы попробуете запустить программу с помощью 44361286907595736L это пойдет в бесконечный цикл. Причина в том, что когда вы умножаете два int с, результат также int , Этот продукт является результатом умножения 165580141 и 267914296. Это допустимые числа, но при умножении их число слишком велико для целочисленного переполнения. Таким образом, вы получите число, которое намного ниже, чем 44361286907595736L , и твоя петля не останавливается.

Если вы определяете свои переменные как long этого не произойдет. Вот немного более читаемая версия вашей программы.

public static long[] productFib(long prod) < long prev = 0; long curr = 1; long multiplied = prev * curr; while (multiplied < prod) < long temp = curr; curr += prev; prev = temp; multiplied = prev * curr; >return new long[] < prev, curr, multiplied == prod ? 1 : 0 >; > 

Определение проблемы: Вход: продукт — искомый продукт Выход: массив из 3 элементов:

Где F1 — первое число Фибоначчи, F2 — второе число Фибоначчи, результат равен 1, если F1 * F2 = произведение, в противном случае: result = 0

Эту проблему можно решить более эффективно, используя следующие формулы: 1. Прямая формула для получения n-го числа Фибоначчи. 2. Прямая формула для получения индекса заданного числа Фибоначчи.

Вы можете получить соответствующие формулы и пояснения по следующей ссылке: https://en.wikipedia.org/wiki/Fibonacci_number

Идея состоит в том, чтобы получить индекс числа Фибоначчи: sqrt(product)

Затем мы можем перейти к следующему и предыдущему числам Фибоначчи и сравнить их продукты с данным продуктом.

Это соответствующий код Java:

private static double phi = (1 + Math.sqrt(5)) / 2; public static void main(String[] args) < System.out.println(Arrays.toString(fibProd(800))); // [34, 55, 0] System.out.println(Arrays.toString(fibProd(714))); // [21, 34, 1] System.out.println(Arrays.toString(fibProd(15))); // [3, 5, 1] System.out.println(Arrays.toString(fibProd(40))); // [5, 8, 1] System.out.println(Arrays.toString(fibProd(2))); // [1, 2, 1] System.out.println(Arrays.toString(fibProd(3))); // [2, 3, 0] >private static long[] fibProd(long product) < long currentIndex = getFibIndex(Math.round(Math.sqrt(product))); long currentElement = getFibElement(currentIndex); long previousElement = getFibElement(currentIndex - 1); long nextElement = getFibElement(currentIndex + 1); int c1 = Long.compare(previousElement * currentElement, product); if(c1 == 0) < return new long[] ; > int c2 = Long.compare(currentElement * nextElement, product); if(c2 == 0) < return new long[] ; > if (c1 < c2) < return new long[] ; > else < return new long[] ; > > private static long getFibIndex(long item) < double m = item * Math.sqrt(5) + 0.5; return Math.round(Math.log(m) / Math.log(phi)); >private static long getFibElement(long index) < return Math.round(Math.pow(phi, index) / Math.sqrt(5)); >

Источник

Читайте также:  Как поставить на фон картинку в HTML

Расчет произведения целочисленных значений в диапазоне от 1 до 10

Далее: Далее рассчитайте произведение от 1 до 11, 1 до
12, 1 до 13 и 1 до 14. Выведите в консоль результаты расчетов.

И тут вопрос: как задать для n изменяемое значение от 10 до 14?

Составить программу вычисления произведения двух квадратных целочисленных матриц А и В
Составить программу вычисления произведения двух квадратных целочисленных матриц А и В размером 5*5.

Вычисление суммы последовательности значений математического выражения в заданном диапазоне значений аргумента
Разработать алгоритм вычисления суммы последовательности значений математического выражения Y в.

Распечатать таблицу значений ряда и значений системной функции для x, изменяющегося в заданном диапазоне
В универе программа компилировалась нормально,но на стареньком visual studio, дома из-за win8.1.

Сортировка целочисленных значений выбором
Название: Сортировка целочисленных значений выбором. Описание: Необходимо описать статический.

Эксперт Java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public class Primer { public static void main(String[] args) { int n = 10; int produkt = 1; int i =1; while (i = n) { produkt *= i; i++; } System.out.println(produkt); n = 12; while (i = n) { produkt *= i; i++; } System.out.println(produkt); } }.

Проверка на ввод целочисленных значений
как к данному вводу массива привязать (функцией или просто в коде) проверку на ввод целочисленных.

Класс целочисленных значений MegaInt
создаю класс megaint который вмещает во много раз чисел чем обычный int. И у меня вопрос — как.

Точность значений в целочисленных переменных
Задача При начальных x=0.3, y=1.2, z=0.3 вычислять значение функции F(x,y,z)=(1/6)*\pi.

Создать стек целочисленных значений
Создать стек целочисленных значений, для реализации используя односвязные списки. Реализовать.

Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном диапазоне с заданным шагом
1)Задание: Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов.

Поиск произведения элементов в заданном диапазоне в одномерном массиве
Завтра экзамен!Нужен код в С++!Буду очень благодарна! Разработать приложение поиска произведения.

Источник

Составить программу с использованием рекурсии нахождения произведения последовательности n чисел 1 3 5 7 9 . 2n-1

Составить программу с использованием рекурсии нахождения произведения последовательности n чисел 1 3 5 7 9 . 2n-1.

Составить программу нахождения произведения нечётных чисел из [a;b]
Вот такие задачи надо сделать: 1.Составить программу нахождения произведения нечётных чисел из .

составить программу нахождения произведения ряда натуральных чисел от 15 до 41
составить программу нахождения произведения ряда натуральных чисел от 15 до 41

Составить программу определения произведения отрицательных чисел последовательности
ТЕМА: Циклические алгоритмы. написание программ с использованием циклических конструкций.

Составить программу нахождения произведения.
13. Составить программу нахождения произведения отрицательных элементов двумерного массива А(3,5).

Лучший ответ

Сообщение было отмечено как решение

Решение

int x= 2n-1; public static int product(int x){ if(x != 1)return x*product(x-2);}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public class ChallengeAccepted { static { trololo( 2 * new Scanner( System.in ).nextInt() - 1 ); } static void trololo ( Integer value ) { try { trololo ( ( value == 1 ? null : value ).hashCode() - 2 ); } catch ( Exception ex ) { throw new RuntimeException( ( "\n" + String.valueOf( value ) + ex.getMessage() ).replace( "null", "" ) ); } } public static void main ( String[] args ) { } }

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

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

1 2 3 4 5 6 7 8 9 10 11 12 13
import java.util.Scanner; class OddsProduct { static long oddsProduct(long n) { return ( n  2 ) ? 1 : n * oddsProduct(n - 2); } public static void main(String[] args) { Scanner s = new Scanner(System.in); long n = s.nextLong(); System.out.println(oddsProduct(n * 2 - 1)); } }

ЦитатаСообщение от easybudda Посмотреть сообщение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Test { static { trololo( 2 * new Scanner( System.in ).nextInt() - 1, 1 ); } static void trololo ( Integer value, Integer result ) { try { trololo ( ( value == 1 ? null : value ).hashCode() - 2, value * result ); } catch ( Exception ex ) { System.out.println(result); } } public static void main ( String[] args ) { } }

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

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

Составить программу нахождения большего из 4 чисел a,b,c,d с использованием функции поиска большего из двух.
Составить программу нахождения большего из 4 чисел a,b,c,d с использованием функции поиска большего.

Составить программу нахождения произведения трех наибольших
Составить программу нахождения произведения трех наибольших из 4 чисел M,L,K,N.

Источник

Циклы. Вычислить произведение чисел от 1 до 25 с использованием цикла do while

Программу выполните с использованием цикла с предусловием и с использованием цикла с постусловием. Циклы должны быть в о
Программу выполните с использованием цикла с предусловием и с использованием цикла с постусловием.

Вычислить произведение с использованием цикла
Прошу помочь, т.к. идей вообще никаких. Требуется ввести число сомножителей, вычислить.

Составить программу с использованием операторов цикла — вычислить произведение
Составить программу с использованием операторов цикла. Данные для вычисления должны вводится с.

System.out.println("15511210043330985984000000");

Евгений Мак, какая задача — такое решение.

Добавлено через 17 минут
Не благодари:

var result = BigInteger.ONE; var i = 1; do { final var x = BigInteger.valueOf(i); result = result.multiply(x); i++; } while (i = 25); System.out.println(result);

Вычислить произведение чисел с использованием WHILE
При заданном целом числе и введённом с клавиатуры целым числом вычислить произведение этих чисел с.

Используя циклы, вычислить произведение сумм двух чисел, инкрементируя оба числа с заданным шагом
(1+0.1)(2+0.2). (9+0.9); Создавайте темы с осмысленными и понятными названиями — это серьезно.

Вычислить выражение с использованием операторов условного перехода и с использованием оператора цикла
Помогите. Составить программу расчета выражений на языке QBASIC. Нужна программа в двух вариантах.

вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного.

Циклы: вычислить произведение
нужна помощь Вычислить: \prod_^\left(\frac\: *\: \sum_^\frac

Циклы. Вычислить произведение
Смоделировать арифметический цикл с помощью оператора цикла for. Массивы не использовать. Для.

Источник

Нужен код который возвращает произведение чисел, заданных одномерным массивом

Реализовать выполнение заданных действий над одномерным массивом.
"Реализовать выполнение заданных действий над одномерным массивом. Число элементов массива задаётся.

Упростить код, который возвращает количество делителей всех чисел до числа передаваемого в Р
Что делает этот класс? Метод Р если точнее. Я так понял, что он возвращает количество делителей.

Класс для работы с одномерным массивом целых чисел
Доброго времени суток. Есть вот такая программа: using System; using.

Класс для работы с одномерным массивом целых чисел
Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса.

Эксперт Java

ЦитатаСообщение от Warlockpw123 Посмотреть сообщение

До этого была программа которая выводила сумму чисел, заданных одномерным массивом.
Массивы задавались тестом

public void testSumArray() { FirstSteps firstSteps = new FirstSteps(); int[] array1 = {1, 2, 3}; assertEquals(6, firstSteps.sum(array1)); int[] array2 = {-1, -2, 3}; assertEquals(0, firstSteps.sum(array2)); int[] array3 = {}; assertEquals(0, firstSteps.sum(array3)); }
public class FirstSteps { public int sum(int[] array){ int sum = 0; for (int value : array) { sum += value; } return sum; } }
public class FirstSteps { public int mul(int[] array){ int mul = 0; for (int value : array) { mul *= value; } return mul; } }

ЦитатаСообщение от Warlockpw123 Посмотреть сообщение

ЦитатаСообщение от Warlockpw123 Посмотреть сообщение

ЦитатаСообщение от Warlockpw123 Посмотреть сообщение

Эксперт Java

Операции с одномерным массивом, заданным генератором случайных чисел
SOS, уважаемый All! Сломал себе голову на такой задаче: Дан одномерный массив целых чисел.

Описать класс для работы с одномерным массивом целых чисел
Помогите пожалуйста:) Описать класс для работы с одномерным массивом целых чисел (вектором). .

Задачка с одномерным массивом.Найти количество удвоенных нечётных чисел
Помогите пожалуйста. Вот текст задания: Даны целые числа a1,a2..an.Известно что a1>0 и что.

Создать класс для работы с одномерным массивом целых чисел
Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса.

Описать класс для работы с одномерным массивом целых чисел
По заданию нужно Описать класс для работы с одномерным массивом целых чисел. Обеспечить.

Описать класс для работы с одномерным массивом вещественных чисел
Описать класс для работы с одномерным массивом вещественных чисел. Предусмотреть возможность работы.

Источник

Оцените статью