p 是质数
(p−1)!modp=−1
1×2×⋯(p−1)⋯(p+1)×(p+2)×⋯(2p−1)modp=1
https://www.luogu.com.cn/problem/P1134
也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:
12!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,600
12的阶乘最右边的非零位为6。
写一个程序,计算N(1≤N≤50,000,000)阶乘的最右边的非零位的值。
注意:10,000,000!有2499999个零。
仅一行包含一个正整数N。
一个整数,表示最右边的非零位的值。
12
6
USACO Training Section 3.2
#include <bits/stdc++.h>
using namespace std;
int n, z = 1, a[] = {1, 3, 4, 2};
int main()
{
scanf("%d", &n);
while (n > 0)
{
for (int i = 1; i <= n % 10; i++)
{
if (i != 5)
{
z = z * i % 10;
}
}
n /= 5;
z = z * a[n & 3] % 10;
}
printf("%d\n", z);
return 0;
}