N!怎么求所有0啊啊啊啊

我遇到了一个问题:
有一题他需要求N!中所有的0
而我写的只能求末尾的0
这是我的代码:

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int r=0;
    while(1){
        if(n<5){
            break;
        }
        r+=n/5;
        n=n/5;
    }
    cout<<r;
    return 0;
}

比如12!=479001600 ,得数应是4,而我的只有2(末尾的)
求求各位
帮我改进一下
改成能求所有0的
求求了!!
欢迎留言

你的程序按照5的因数个计算n!的0的个数,只能算出末尾连续0个数,其它位置的0不能算出。
准确的结果需要计算出n!的实际值后,才能数其它位置0个数。
通过数组计算n!,结果输出时是按数组逐一输出的,加入一行计数为0加1即可出结果。
100!例子“

img

C语言通过数组计算阶乘输出大数(40000位) 例如10000!结果长度 35660位整数。

   for(int k=digit; k>=1; --k)
        { printf("%d",a[k-1]); if (a[k-1]==0) z++;}

参考https://blog.csdn.net/m0_54619218/article/details/128031443
源码:
C语言源代码(big.c):
https://download.csdn.net/download/m0_54619218/87152041