-
阶乘因式分解(一)
时间限制: 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
来源
- 网络
-
16里面有8个2,还有4个4,还有2个8,还有1个16 加起来就是15 (2的次方)
代码一:
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,x,i,ans=0;
scanf("%d%d",&n,&x);
while(n)
{
n/=x;
ans+=n;
}
printf("%d\n",ans);
}
return 0;
}
代码二:
#include<stdio.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int a, b, s = 0;
scanf("%d%d", &a, &b);
int c = b;
while (a / b > 0)
{
s += a / b;
b *= c;
}
printf("%d\n", s);
}
}
代码三:
#include<stdio.h>
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int i,n,m,k,ans = 0;
scanf("%d %d",&n,&m);
for(i = n; i >= 1; i--)
{
if(i%m==0)
{
k = i;
while(k%m == 0)
{
k = k/m;
ans++;
}
}
}
printf("%d\n",ans);
}
return 0;
}