acwing 1381 阶乘

简介: acwing 1381 阶乘

题目描述
image.png

image.png

输入样例:

7

输出样例:

4

考察点

image.png

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(reader.readLine());
        // d2统计包含数字i包含多少个2,d5统计包含多少个5
        int d2 = 0, d5 = 0, c = 1;
       // 循环结束后因为2和5都被除去了,所以个位肯定不是0
        for (int i = 2; i <= n; i++) {
            int j  = i;
            // 由于一个数只要是10的倍数最后的数字一定是0,因此我们需要可以先除去为0的部分
            // 又因为10以内的数字中只有2*5=10,因此我们可以将除去它的因数就可以了
            while (j % 2 == 0) {
                j /= 2;
                d2++;
            }
            while (j % 5 == 0) {
                j /= 5;
                d5++;
            }
            // 得到所有不包含2和5的倍数的数的乘积的结果的个位数
            c = c*j % 10;
        }
        // 处理多出来2的倍数,因为一个数仅仅是2的倍数但并不是5的倍数是可以省略的
        for (int i = 0; i < d2- d5; i++) {
            c = c*2 % 10;
        }
        writer.write(c + "\n");
        writer.flush();
        writer.close();
        reader.close();
    }
}


相关文章
|
6月前
|
Java
leetcode-509:斐波那契数
leetcode-509:斐波那契数
477 0
|
6月前
|
机器学习/深度学习
leetcode-172:阶乘后的零
leetcode-172:阶乘后的零
43 0
|
11月前
leetcode 509 斐波那契数
今天重新看了下动态规划, 它和递归的区别就是,它是自下而上的。 还了解到状态压缩 如果我们发现每次状态转移只需要 DP table 中的一部分,那么可以尝试用状态压缩来缩小 DP table 的大小,只记录必要的数据 于是就刷了这道简答题,用到了状态压缩
38 0
|
机器学习/深度学习
LeetCode-172 阶乘后的零
LeetCode-172 阶乘后的零
LeetCode 172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
77 0
斐波那契数(LeetCode-509)
斐波那契数(LeetCode-509)
81 0
AcWing 804. n 的阶乘
AcWing 804. n 的阶乘
53 0
AcWing 804. n 的阶乘
AcWing 741. 斐波那契数列
AcWing 741. 斐波那契数列
92 0
AcWing 741. 斐波那契数列
AcWing 21. 斐波那契数列
AcWing 21. 斐波那契数列
106 0
AcWing 21. 斐波那契数列