9001. Большое
произведение
Жюри решило дать вам сложную
задачу. Даны числа a и b, требуется найти следующее произведение
чисел a * (a + 1) * ... * b.
Далее подумав, что задача будет
слишком скучной, вместо значения произведения, жюри решило спросить у вас знак
произведения. Так что, вам нужно найти является ли это произведение
положительным, отрицательным или нулем.
Вход. Два целых числа a и b
(-109 ≤ a ≤ b ≤ 109).
Выход. Выведите знак произведения a * (a + 1) * ... * b – одно из следующих чисел , “-1”, “0”, “1” соответственно.
Пример
входа 1 |
Пример
выхода 1 |
3 5 |
1 |
|
|
Пример
входа 2 |
Пример
выхода 2 |
-6 5 |
0 |
|
|
Пример
входа 3 |
Пример
выхода 3 |
-7 -1 |
-1 |
условный
оператор
В решении будем исходить из того, что a ≤ b.
Если a > 0, то произведение чисел будет положительным, выводим 1.
Если a < 0 и b > 0, то среди множителей имеется 0, поэтому произведение чисел
равно 0, выводим 0.
Если b < 0, то все множители отрицательны. Знак произведения
определяется количеством отрицательных множителей. Если число множителей четно
(a и b имеют разную четность), то ответ
1. Иначе ответ -1.
Пример
В третьем примере произведение
имеет вид:
(-7) * (-6) * (-5) * (-4) * (-3)
* (-2) * (-1)
Произведение содержит 7 отрицательных
множителей. Числа a = -7 и b = -1 имеют одинаковую четность. Следовательно произведение
отрицательно.
Реализация алгоритма
Читаем входные данные.
scanf("%d %d", &a, &b);
Если
все множители положительны, то ответ 1.
if (a > 0) res = 1;
Если
среди множителей есть 0, то ответ 0.
else if (a <= 0 && b >= 0) res = 0;
else
{
Если
все множители отрицательны, то ответ определяется количеством множителей. Если
число множителей четно (a и b имеют разную
четность), то ответ 1. Иначе ответ -1.
if ((b - a) % 2 == 0)
res = -1;
else res = 1;
}
Выводим ответ.
printf("%d\n", res);
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
int b = con.nextInt();
int res;
if (a >
0) res = 1;
else if (a <= 0 && b >= 0) res = 0;
else
{
if ((b - a) % 2
== 0) res = -1;
else res = 1;
}
System.out.println(res);
con.close();
}
}
a, b = map(int,input().split())
if a > 0: res = 1
elif a <= 0 and b >= 0: res = 0
else:
if (b - a) % 2 == 0: res =
-1
else: res = 1
print(res)