#java
Задача состоит в следующем:
Вывести следующее после текущего чётное число. Числа целые.
Пример: Входные данные: 5, Выходные данные: 6.
или Входные данные: 6, Выходные данные: 8.
Проблема в том, что использовать конструкцию if или циклы нельзя. При скором размышлении
и поиске похожих решений в поисковике ничего полезного не обнаружил.
Подскажите пожалуйста, какие алгоритмы бывают?
Язык Java.
Ответы
Ответ 1
Если нет никаких суровых ограничений на размер исходных данных, то подошло бы что-то такое x = x+2 - (x&1); или x = (x+2)&(-2)Ответ 2
Вариант с остатком от деления. X+2-X%2 Пример: class Main { public static void main(String[] args) { for(int i = 1; i <= 100; i++) { System.out.println(i+" " + a(i)); } } public static int a(int x) {return x+2-x%2;} }Ответ 3
Еще вариант, для коллекции: x=(x/2+1)*2Ответ 4
public class Even { public static void main(String[] args) { int x = -4; System.out.println("x=" + x + ", next even " + (x + 2 - Math.abs(x)%2)); } } x=-5, next even -4 x=-4, next even -2 x=-3, next even -2 x=-2, next even 0 x=-1, next even 0 x=0, next even 2 x=1, next even 2 x=2, next even 4 x=3, next even 4 x=4, next even 6 x=5, next even 6
Комментариев нет:
Отправить комментарий