首页 > 解决方案 > 如何在给定的 this 中找到最大的模数

问题描述

我想做的是在列表中找到最大的模

到目前为止,这是我的代码:

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

有没有更快的方法可以在不使用蛮力的情况下做到这一点?

标签: javabrute-force

解决方案


在 range 中的所有数字中1-n,最大的模数mm - 1,除了 if n < m,在这种情况下它是n,所以:

int maxModulo = Math.min(n, m-1);

上面当然假设n >= 1m >= 1


推荐阅读