import java.math.BigInteger;
import java.util.Scanner;
public class LastFact
{
// Returns Factorial of N
static BigInteger factorial(int N)
{
// Initialize result
BigInteger f = new BigInteger("1"); // Or BigInteger.ONE
// Multiply f with 2, 3, ...N
for (int i = 2; i <= N; i++)
f = f.multiply(BigInteger.valueOf(i));
return f;
}
// Driver method
public static void main(String args[]) throws Exception
{
int N = 300;
System.out.println(factorial(N));
}
}
答案 0 :(得分:1)
如果您要删除N
的最后BigInteger
位数字,请除以10^N
,例如删除后两位除以10^2=100
:
BigInteger i = new BigInteger("123456");
BigInteger j = i.divide(BigInteger.valueOf(100)); // j=1234
要提醒您要删除,请使用reminder()
方法:
BigInteger i = new BigInteger("123456");
BigInteger j = i.reminder(BigInteger.valueOf(100)); // j=56
请注意,由于您要计算较大的阶乘,因此可能要使用Stirling's approximation。
答案 1 :(得分:1)
要取最后一位数字,除以BigInteger
的余数除以10
System.out.println(f.remainder(BigInteger.TEN));
答案 2 :(得分:0)
将大整数转换为字符串,然后获取最后一位。
public static void main(String args[]) throws Exception
{
int N = 300;
String bigNumber = factorial(N).toString();
String lastNumberStr = bigNumber.charAt(bigNumber.length()-1)+"";
int lastNumber = Integer.parseInt(lastNumberStr);
System.out.println(lastNumber);
}
答案 3 :(得分:0)
您可以编写一个函数:
public byte lastDigit(BigInteger value) {
String str = String.valueOf(value);
String digit = str.substring(str.length() - 1, str.length());
return Byte.valueOf(digit);
}