1871 - 阶乘因式分解(一)

通过次数

0

提交次数

0

时间限制 : 3 秒 内存限制 : 128 MB

给定两个数m,n,其中m是一个素数。

将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。

题目输入

第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。

题目输出

输出m的个数。

输入/输出样例

输入格式

2
100 5
16 2

输出格式

24
15

C语言解答

#include <stdio.h>
int main(){
    int s, i;
    scanf("%d", &s);
    while(s--){
        int t, m, n, cnt = 0;
        scanf("%d %d", &n, &m);
        for(i = 1; i <= n; i++){
            t = i;
            while(t%m == 0){
                cnt++;
                t /= m;
            }
        }
        printf("%d\n", cnt);
    }
    return 0;
}

C++解答

 #include<iostream>
 using namespace std;
 int main()
 {
     int k,i,j,n,m,w,a;
     cin>>k;
     while(k--)
     {
         w=a=0;
         cin>>n>>m;
         for(i=2;i<=n;i++)
         {
             j=i;
             while(j%m==0&&j)
             {
                 j=j/m;
                 a++;
             }
            w+=a;
             a=0;
         }
         cout<<w<<endl;
     }
     return 0;
 }