gpt4 book ai didi

java - 指数 b 中的最后一位数字

转载 作者:行者123 更新时间:2023-12-01 07:49:49 26 4
gpt4 key购买 nike

我编写这段代码是为了查找指数 b 的最后一位数字,但 SPOJ 说它是错误的。我尝试了几乎所有的测试用例,但找不到错误。问题:http://www.spoj.com/problems/LASTDIG/我的解决方案:

package spoj;

import java.util.Scanner;

public class LastDigit {

public static void main(String[] args) throws java.lang.Exception {
Scanner p = new Scanner(System.in);
for(int test = p.nextInt();test>0;test-- ){
int a = p.nextInt();
int b = p.nextInt();
int result = (int) Math.pow(a,b);
System.out.println(result%10);
}
}
}

最佳答案

Math.pow是浮点运算!它不计算确切的结果。这就是为什么你要在那里设计有趣的 Actor 阵容。

因此您需要使用BigInteger或编写自己的幂函数。后者更可取,因为计算最后一位数字的更有效方法是减少 a 模 10,b 模 4,然后 取幂,然后再次减少模 10。这甚至应该在浮点运算精确的范围内工作。

另外:如果 b 为负数,您确实应该检查一下 a % 10 是否可逆模 10。否则,您将进行模 10 等效除以零的操作。

关于java - 指数 b 中的最后一位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40104750/

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