C语言算法超时,求优化算法

多组数据,求N!的值有多少个0,
求123N所得数末尾有多少个0?(1<=N<=unsigned INT_MAX);
有多组数据,第一行一个正整数t(t<100)表示输入数据组数,接下来有t组输入数据,每组数据占1行,输入为一个整数;
输出一个整数,表示末尾有多少个0,对于每组输入,输出一行。

img

img

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n>0)
    {
        int N;
        scanf("%d",&N);
        int count=0;
        for (int i=5;i<=N;i++)
        {
            int k=5;
            while(N>=k)
            {
                if(i%k==0)
                    count++;
                k *= 5;
            }
        }
        printf("%d\n",count);
        n--;
    }
    return 0;
}

    int count=0;
    for (int i=5;i<=N;i++)
    {
        if (i%5==0){
            count++;
            if (i%(5*5)==0)
                count++;
        }
    }

#include<stdio.h>
int main (void)
{
    long long t,i,N,n;
    scanf("%d",&t);
    while(t>0)
    {
        int m=0;
        scanf("%lld",&N);
        m=N/5;
        for(i=25;i<=N;i*=5)
            m=N/i+m;
        t--;
        printf("%d\n",m);
    }
    return 0;
}