Что я пытаюсь сделать, так это найти самое большое по модулю в списке
Это мой код:
import java.util.*; public class p2 { public static void main(String[] args) { ArrayList<Integer> ar = new ArrayList<>(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); for(int i = 1; i <= n; i++) { int mod = i % m; ar.add(mod); } System.out.println(Collections.max(ar)); } }
Например
5 3
Вывод будет 2
, поскольку наибольшее значение по модулю от 1-5 при делении на 3 равно 2
Есть ли более быстрый способ сделать это без использования грубой силы?
Из всех чисел в диапазоне 1-n наибольшее по модулю значение m равно m - 1, за исключением случаев, когда n < m, в этом случае n, поэтому:
1-n
m
m - 1
n < m
n
int maxModulo = Math.min(n, m-1);
Выше, конечно, предполагается, что n >= 1 и m >= 1.
n >= 1
m >= 1