1831: 阶乘因式分解(一)
时间限制: 3 Sec 内存限制: 64 MB提交: 0 解决: 0
您该题的状态:未开始
[提交][状态][讨论版]
题目描述
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
输入
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
随后的s行, 每行有两个整数n,m。
输出
输出m的个数。
样例输入
2
100 5
16 2
样例输出
24
15
提示
来源
#include<stdio.h>
int main()
{
int t,a,b;
long long sum;//用int会输出超限
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%d%d",&a,&b);
if(a==0)
printf("0\n");
else{
while(a)
{
sum+=a/b;
a/=b;
}
printf("%d\n",sum);
}
}
}
最优解:
#include<stdio.h>
int get(int n,int m){
if(n==0)return 0;
else return get(n/m,m)+n/m;
}
int main()
{
int a,b,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
printf("%d\n",get(a,b));
}
}