nefu 118 n!後面有多少個0(算數基本定理)
阿新 • • 發佈:2018-05-12
個數 算術 算數 end OS 因式分解 大於 一個數 family
題意:從輸入中讀取一個數n,求出n!中末尾0的個數。
思路:階乘後的數很大,不可能直接計算的,對於任意一個正整數,若對其進行因式分解,那麽其末尾的0必定可以分解為2*5,在這裏,每一個0必然和一個因子5對應,但是註意,一個數的因式分解中的因子5不一定對應著一個0,因為還需要一個2呢,對於n!,在飲食分解中,2的因子個數要大於5的因子個數,所以如果存在一個因子5,那麽它必然對應著n!末尾的一個0,本題便變為了 求 因子5的個數,有因為5是素數,所以可以用到算術基本定理的 n!的素數因子分解中的素數p的冪為:[n/p]+[n/p^2]+[n/p^3]+......
int T,n; int main() { ios::sync_with_stdio(false); cin>>T; while(T--) { cin>>n; int ans=0; int a=5; int t=n; while(a<=t) { ans+=t/a; a*=5; } cout<<ans<<endl; } return 0; }
nefu 118 n!後面有多少個0(算數基本定理)