P1134 階乘問題

2022-05-05 19:57:15 字數 727 閱讀 1011

題意 : 求出 \(n!\) 去掉後導 \(0\) 之後的最後一位

首先後導 \(0\) 最簡單是由 \(2 * 5\) 得來的

於是想到乙個騷操作, 先把每個數的 \(2, 5\) 提出來, 一對一對地消掉, 就把後導 \(0\) 去掉了

因為在 \(1-n\) 中因子 \(2\) 一定比 \(5\) 多, 所以最後讓 2 的個數減去 5 的個數

然後對於剩下的 \(2\) 不想寫快速冪

發現只用保留最後一位, 然後最後一位以 \(4\) 為週期反覆

於是就 \(a\) 了

#include#include#include#include#include#includetypedef long long ll;

using namespace std;

int rd()

while(c >= '0' && c <= '9')

return flag * out;

}int n, ans = 1;

int num5, num2;

int change(int x)

int last[4] = ;

int main()

num2 -= num5;

ans = (ans * (last[num2 % 4])) % 10;

printf("%d\n", ans);

return 0;

}

P1134 階乘問題

也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如 12 1 times 2 times 3 times 4 times 5 times 6 times 7 times 8 times 9 times 10 times 11 times 12 479,001,60012 1 2 3 4 5 6...

P1134 階乘問題

也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如 12 1 times 2 times 3 times 4 times 5 times 6 times 7 times 8 times 9 times 10 times 11 times 12 479,001,60012 1 2 3 4 5 6...

洛谷 P1134 階乘問題

題目概述 給出n,求n 最右邊第一位的非0數。解題思路 對於乙個數的階乘,末尾的0只會以2 5的形式產生。而1到n中因數2的數量遠遠大於5,因此我們可以通過找因數5的方式來濾掉末尾的0 這裡還有另乙個規律 除去0 和1 本題的答案只可能是2,4,6,8。這4個數乘上末位是6的數,結果還是自己,因此可...