? ? ? ? 今天也是參加了一下寧波大學的校賽,其中有一道題是求后綴0的個數,題意是讓我們求一下式子的后綴0個數:
????????????????????????????????????????????????????????????????
? ? ? ? 看上去比較復雜,但是通過化簡我們可以知道以上式子就是求(n + 1)!,這里化簡的過程就不展示了,比較基礎。那么我們如何高效地求出后綴0的個數呢?
? ? ? ? 我們知道,后綴0其實是由一個一個10乘上去的,所以我們需要搞清楚10是怎么來的,我們知道,像10,20,30這些已經很明確告訴我們有10的存在,那么還有呢?沒錯,就是5*偶數,因為我們的偶數是每兩個數出現一次的,他的出現頻率非常高,所以我們其實只需要找到5的個數就可以了,所以問題就十分簡單了,我們將階乘底數除五除盡不就是五出現的次數了嗎,所以總體代碼如下:
#include <bits/stdc++.h>using namespace std;typedef unsigned long long ULL;ULL T, n, ans;int main()
{cin >> T;while(T --){ans = 0;cin >> n;n += 1;while(n)ans += n /= 5;cout << ans << endl;}
}
? ? ? ? 這些數學內容相對比較基礎,只要能夠記住原理就可以非常熟練的用出來,但好像比賽上沒什么用,畢竟太偏了,而且體型比較單一。