阶乘因式分解(一)
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
-
输入
-
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
- 输出m的个数。 样例输入
-
2 100 5 16 2
样例输出
-
24 15
-
-
解析:
-
对于样例一,100/5=20,100/25=4,结果为20+4=24. 样例二,16/2=8,16/4=4,16/8=2,16/16=1
-
结果为8+4+2+1=15.如果n%m!=0,则判断下一个,即n--;
-
-
程序如下:
-
#include<cstdio> int main() { int t; scanf("%d",&t); while(t--) { int n,m; int ans=0; scanf("%d%d",&n,&m); int sum=m; for(int i=1; ; i++) { if(n%sum==0) { ans+=n/sum; sum*=m; if(sum>n) break; } else n--; } printf("%d\n",ans); } return 0; }
-
第一行是一个整数s(0<s<=100),表示测试数据的组数