题目
N 的阶乘(记作 N!)是指从 1 到 N(包括 1 和 N
)的所有整数的乘积。
阶乘运算的结果往往都非常的大。
现在,给定数字 N
,请你求出 N!
的最右边的非零数字是多少。
例如 5!=1×2×3×4×5=120
,所以 5! 的最右边的非零数字是 2
。
输入格式
共一行,包含一个整数 N
。
输出格式
输出一个整数,表示 N!
的最右边的非零数字。
数据范围
1≤N≤1000
输入样例:
7
输出样例:
4
思路
对于n的阶乘,其可以表示为2的x次方乘上5的y次方再乘上若干素数的若干次方,然后根据题意,要除去末尾的0,所以可以考虑对于每个i先把因子2或者5全部除干净了,然后在循环结束后再乘回来刚刚多除去的2或者5。。。复杂度for循环的n乘while循环的logn,就是O(nlogn)
代码
#include<bits/stdc++.h>
using name