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月前
【LeetCode刷题】两数之和、两数相加
【LeetCode刷题】两数之和、两数相加
|
7月前
|
存储 算法 测试技术
|
7月前
|
机器学习/深度学习
leetcode-172:阶乘后的零
leetcode-172:阶乘后的零
47 0
|
7月前
|
Java C++ Python
leetcode-1:两数之和
leetcode-1:两数之和
57 0
|
存储
LeetCode1-两数之和
LeetCode1-两数之和
|
机器学习/深度学习
LeetCode-172 阶乘后的零
LeetCode-172 阶乘后的零
LeetCode-2043 两数相加题解
LeetCode-2043 两数相加题解
LeetCode 172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
83 0
AcWing 804. n 的阶乘
AcWing 804. n 的阶乘
57 0
AcWing 804. n 的阶乘
下一篇
DataWorks