gpt4 book ai didi

java - 乘法后得到最后 2 位数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:07 27 4
gpt4 key购买 nike

我有一个整数数组,我的任务是在将所有这些数字相乘后得到最后 2 位数字。

我想出了下面的代码:

static void process(int array[]) {
if (array.length <= 0) {
System.out.println("-1");
return;
}
int answer = array[0] % 100;

for (int i = 1; i < array.length; i++) {
answer = (answer * array[i] % 100) % 100;
}

System.out.println(answer);
}

我觉得这是一种更好的方法,但是当我在一次考试中使用它时,它只通过了 4 个测试用例中的 2 个。由于性能问题,测试用例失败。失败的测试用例被隐藏,因此无法看到它们。

我什至尝试了替代方法,例如将长变量初始化为 1,然后使用 for 循环并将长变量与数组元素相乘。最终从 long 变量中获取最后两位数,即使在 2 个测试用例中失败。

有没有更好的方法来解决这个问题。

最佳答案

有一些潜在的捷径。乘以一个以 0 结尾的数字或分别以 2 和 5 结尾的两个数字将保证最后一位数字为 0。这样做两次会使您的最后两位数字为 00,您可以提前打印结果。您可以检查您的答案是否为 00 并在出现这种情况时跳出循环。

这会减慢您针对针对此检查量身定制的数据的算法。但是,几乎可以保证一大组(>1000)随机数字早于 00 结束,并且比您的初始方法更快。

示例代码:

static void process(int array[]) {
if (array.length <= 0) {
System.out.println("-1");
return;
}
int answer = array[0] % 100;

for (int i = 1; i < array.length; i++) {
if(answer == 0) {
break;
}
answer = (answer * array[i] % 100) % 100;
}

System.out.println(answer);
}

关于java - 乘法后得到最后 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com