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 ;
}