一个正整数的双阶乘, 表示不超过这个正整数且与它有相同奇偶性的所有 正整数乘积。 nn 的双阶乘用 n ! !n!! 表示。
例如:
3!!=3×1=3
8!!=8×6×4×2=384
11!!=11×9×7×5×3×1=10395
请问, 2021!! 的最后 5 位 (这里指十进制位) 是多少?
注意: 2021!!=2021×2019×⋯×5×3×1 。
这道题没有难度但是会有一些小伙伴理解不了为什么会每个循环取余100000
很多初学的小伙伴可能会算完2021×2019×⋯×5×3×1这个数最后在来取最后五位数,这个想法理论上是可行的,但是很多小伙伴会忘记一个问题,我们一般用的int类型或者long存不了那么大的数据,然后得不出正确答案,但是思路又是对的,问题就出在这。
我们每次循环取余的目的就是把我们需要的数值控制我们能接收的正确范围,如果超出那么结果就会出错。
简而言之,直接把最后五位数取出来依次相乘运算。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum=1;
for(int i=2021; i>0; i-=2){
sum =sum*i%100000;
}
System.out.print(sum);
scan.close();
}
}