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, ...; 核心代码:
 while(n >= m)
{
cnt += n / m;
n /= m;
}

C/C++代码实习(AC):

 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue>
#include <set> using namespace std; int main()
{
int t;
scanf("%d", &t);
while(t --)
{
long long n, m, cnt = ;
scanf("%lld%lld", &n, &m);
while(n >= m)
{
cnt += n / m;
n /= m;
}
printf("%lld\n", cnt);
}
return ;
}
05-11 22:13