階乘因式分解(一) -- ACM解決方案
阿新 • • 發佈:2019-01-27
描述
給定兩個數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; }