poj1401(数学)

1.思路难以想到,既可以利用递归的方法来做,也可以用一种更好的方法来做,反正都是找因子5。
递归公式:
F(n) = n/5 + f(n/5)
递推代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
    
    
    int n,m,t;
    double s;
    cin>>n;
    while(n--)
    {
    
    
        s=1;
        t=0;
        cin>>m;
        while(m>=5)
        {
    
    

            t+=m/5;
            m=m/5;
        }
        printf("%d\n",t);
    }
    return 0;
}

另一种方法(效率更高):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
    
    
    int n,m,t;
    double s;
    cin>>n;
    while(n--)
    {
    
    
        s=1;
        t=0;
        cin>>m;
        for(int i=5; i<=m; i=i*5)
        {
    
    
            t=t+m/i;
        }
        printf("%d\n",t);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/mingjiweixiao/article/details/113620636