70-阶乘因式分解(二)
内存限制:64MB
时间限制:3000ms
特判: No
通过数:7
提交数:7
难度:3
题目描述:
给定两个数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
分析:
1、即就是计算1,2,3,...,n个数中有多少个数能够整除m, m^2, m^3, ...;
核心代码:
1 while(n >= m) 2 { 3 cnt += n / m; 4 n /= m; 5 }
C/C++代码实习(AC):
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <cmath> 6 #include <stack> 7 #include <map> 8 #include <queue> 9 #include <set> 10 11 using namespace std; 12 13 int main() 14 { 15 int t; 16 scanf("%d", &t); 17 while(t --) 18 { 19 long long n, m, cnt = 0; 20 scanf("%lld%lld", &n, &m); 21 while(n >= m) 22 { 23 cnt += n / m; 24 n /= m; 25 } 26 printf("%lld ", cnt); 27 } 28 return 0; 29 }