NYOJ70 (详解)阶乘因式分解(二)

NYOJ70


    因式分解原理:链接

           这个题不可以用暴力去做,否则会超时。。。

     

     分析:   100 用5去分解质因数求其个数为

                             5               5             2

                   100-------->  20 --------->4-------> 2

                   100 = 5*5*2*2     其中含有有两个5


                  那么100!(100的阶乘呢)=1*2*3*4*....*99*100;

                  按照暴力来解就从1到100 分别一直除5累积求和。

                  但是1到100能除5的只有:

                  5 10 15 20 25 30 35 40 45 50 

                  55 60 65 70 75 80 85 90 95 100   (n*5)

                  共有 100/5 = 20 个这样的数

                  但是有些数还没有求完: 20 50 75 100 (n*25)即还能整除5

                  那么共有几个呢?  --->  100/25 = 4个  (即20/5 = 4)

                                                                              (前一次已经除过5了)

                  因此 答案就是 20 + 4 = 24个;


#include
int main()
{
	int n,m,count,k;
	
	scanf("%d",&k);
	while(k--)
	{
		scanf("%d %d",&m,&n);
		
		count = 0;//初始化 
		while(m)
		{
			count +=m/n;
			m = m/n;
		}		
		printf("%d\n",count);
	}
}


    

你可能感兴趣的:(数学类)