1. 程式人生 > >階乘因式分解(一) -- ACM解決方案

階乘因式分解(一) -- ACM解決方案

階乘因式分解(一)

描述

給定兩個數m,n,其中m是一個素數。將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。

輸入

第一行是一個整數s(0<s<=100),表示測試資料的組數隨後的s行, 每行有兩個整數n,m。

輸出

輸出m的個數。

樣例輸入

2
100 5
16 2

樣例輸出

24
15

======================================================================

解題思路:

n!看成一個【1,n】陣列,第幾個數就是幾

第m個數是m,能被m整除,第2m個數是2m,能被m整除。。。

在1~n裡一共有n/m個數能被m整除,這就有n/m個m了,加到count裡(100/5=20)

接下來看m,2m,3m……n/m*m這n/m個數裡(20個)

每個數都/m了之後變成【1,n/m】陣列,第幾個數就是幾

第m個數是m,能被m整除,第2m個數是2m,能被m整除。

有n/m/m個數能被m整除,加到count裡(20/5=4,20+4=24)

n<m時結果是0 不加進去不影響結果且迴圈結束

=====================================================================

程式碼如下:


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

    return 0;
}