描述
给定两个数n,m,其中m是一个素数。
将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。
注:^为求幂符号。
-
输入
-
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
-
输出m的个数
样例输入
-
3 100 5 16 2 1000000000 13
样例输出
-
24 15 83333329
-
也可以写成
num=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n] 其中[]为取整
求N!有几个要注意的地方。
1.最大的质因子不会超过N,
2.关于公式的转化:
式子中把一些东西看成一个整体。举例:
num=N/pi^1+N/pi^2+N/pi^3;
==>
N/p1^1+(N/p1^1)/p1^1+(N/p1^1)/p1^1)/p1^1;即:while 循环#include<stdio.h> int main() { int n,m,ans,t; scanf("%d",&t); while(t--) { ans=0; scanf("%d%d",&n,&m); while(n>=m) { ans+=n/m; n/=m; } printf("%d\n",ans); } return 0; }
也可以写成
num=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n] 其中[]为取整
求N!有几个要注意的地方。
1.最大的质因子不会超过N,
2.关于公式的转化:
式子中把一些东西看成一个整体。举例:
num=N/pi^1+N/pi^2+N/pi^3;
==>
N/p1^1+(N/p1^1)/p1^1+(N/p1^1)/p1^1)/p1^1;