При умножении числа до переполнения, требуется вывести число до и после переполнения. Не получается с отрицательным числом. С положительным все хорошо
Например первое число - 1. Его умножать до переполнения. На положительное число алгоритм понятен, не понятно для отрицательного значения. Например число - 1 умножать на (- 2) до переполнения
public class Loop5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Введите число");
long l = Long.parseLong(scan.next());
Loop5 l5 = new Loop5();
l5.longMinusValue(l);
}
public void longMinusValue(long l) {
Scanner scan = new Scanner(System.in);
System.out.println("Введите число на которое умножать");
long l1 = Long.parseLong(scan.next());
while (Long.MAX_VALUE > l) {
l *= l1;
System.out.println(l);
}
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Для случая тихого переполнения:
while (true) {
long res = l * l1;
if (res/l==l1) {
l = res;
System.out.println(l);
}
else{
System.out.println("Overflow");
System.out.println(res);
break;
}
}
Пример для 100,-200:
-20000
4000000
-800000000
160000000000
-32000000000000
6400000000000000
-1280000000000000000
Overflow
-2254417031933722624