阶乘因式分解(一)
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
输入
第一行是一个整数s(0
输出
输出m的个数。
样例输入
2
100 5
16 2
样例输出
24
15
思路分析
这题纯属思维题,没什么难度,关键是能不能找到规律。刚开始做这道题的时候想到的最简单的方法就是用大数算出来阶乘再分解质因数,毫无疑问时间超限。后来想到从1~N一一分解质因数,遇到m便p++,后来发现还是太复杂。于是便找到了更简单的规律,规律比较简单,下面奉上代码一看便知:
#include<stdio.h>
int main()
{
int N,n,m,p;
scanf("%d",&N);
while(N--)
{
p=0;
scanf("%d%d",&n,&m);
while(n)
p+=n/=m;//相当于n/=m;p+=n;
printf("%d\n",p);
}
return 0;
}