時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:2描述
給定兩個數m,n,其中m是乙個素數。
將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。輸入
第一行是乙個整數s(0
輸出輸出m的個數。
樣例輸入
2100 5
16 2
樣例輸出
24
關鍵**:
while(n)
完整**:#include int main()
printf("%d\n",s);
}return 0;
}
分析:
不要去算100的階乘,因為這個數太大了,程式最終無法得到正確答案。(思路雖然看起來很簡單,但實際上是不可操作,不可實現的)
正確思路:
比如n=100,m=5.先用100/5得20,代表100的階乘即1*2*3*.....*100裡面至少有20個數符合至少有乙個質因數5的要求。這二十個數分別是1*5,2*5,3*5,.....20*5.然後對於這二十個數再分別除於5得到另外二十個數,分別是1,2,3,......20.對於這二十個數,在進行同上處理,即用20/5得4,即1*5,2*5,3*5,4*5這四個數又能被5整除一次,然後對於這四個數在分別除於5得到另外4個數,即1,2,3,4.再同上處理,用4/5,可是4本身都比5要小,4裡面的數不可能再被5整出了。
到此結束。一共得到了20+4=24個質因數5。可以看出最終的1實際上就是1*5*5=25(因為除了兩次5)即100的階乘裡面的25.
這個思路其實就是把100的階乘數即1到100分別拿出來看能被5整除幾次,然後把這些次數加在一起即得1*2*3*....100能被5整除幾次。
階乘因式分解(一)
描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 階乘指從1乘以2乘以3乘以...
階乘因式分解(一)
描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 s 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 演算法思路 由於m是乙...
階乘因式分解(一)
時間限制 3000 ms 記憶體限制 65535 kb 難度 2描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 輸出輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 網路 上傳者苗棟棟 此題不...