#java
#java
Вопрос:
Мне нужно написать программу, которая выводит произведение всех целых чисел от a до b (a < b).
Включите a и исключите b из продукта.
Пример ввода 1:
1 2
Пример вывода 1:
1
Вывод вашего кода:
2
Вот мой код:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 0;
for(long i = a; i<b; i ){
multiply = i * (i 1);
}
System.out.println(multiply);
}
}
Что я делаю не так? Пожалуйста, подсказка 🙂
Обновить:
Это тоже не помогло.
Тестовый ввод:
1 2
Правильный вывод:
1
Вывод вашего кода:
0
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 0;
for(long i = a 1; i<b; i ){
multiply = i * (i 1);
if(multiply==2){
--multiply;
}
}
System.out.println(multiply);
}
}
Ответ №1:
Вы должны начать с multiply = 1
, а затем продолжать умножать его на следующие целые числа.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 1;
for (long i = a; i < b; i ) {
multiply *= i;
}
System.out.println(multiply);
}
}
Пример запуска:
1 2
1
Еще один пример запуска:
2 5
24
Ответ №2:
Давайте попробуем выработать решение перед написанием кода и поймем, что такое «произведение всех целых чисел от a до b (a < b)»
Для a = 1 и b = 2, поскольку мы включаем 1 и исключаем 2, результат равен 1 Аналогично, для a = 1 и b = 3 результат равен 1 * 2
Итак, ваша первая реализация на самом деле близка: вы хотели бы перебрать все числа, включенные в результат, и накопить это число путем умножения. Вы бы не хотели только multiply = i * (i 1);
потому, что это заменит значение multiply
в каждой итерации цикла, вместо этого вы должны использовать предыдущее значение multiply
и объединить его с i