N 的阶乘写作 N!表示小于等于 N 的所有正整数的乘积.阶乘会很快的变大,如 13!就必须用 32 位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例子,5!=12345=120 所以 5!的最后面的非零位是 2,7!=1234567=5040,所以最后面的非零位是 4.
输入格式:
共一行,一个整数不大于 4,220 的整数 N.
输出格式:
共一行,输出 N!最后面的非零位.
输入样例1:
7
输出样例1:
4
输入样例2:
14
输出样例2:
2
输入样例3:
1000
输出样例3:
2
【源代码】
#include <iostream>
using namespace std;
inline void Cut(int& a) // 去除末尾0;
{
while ((a % 10) == 0) // 末位为0;
{
a /= 10;
}
a %= 10000; // 只保留最后四位,避免“阶乘过程中末尾连续不出现0,导致数字过大”;
}
int main()
{
int n;
cin >> n;
int fac = 1; // 阶乘
for (int i = 2; i <= n; i++)
{
fac *= i;
Cut(fac);
}
fac %= 10; // 获取最后一位;
cout << fac << endl;
return 0;
}