牛客小白月賽23 B 階乘

2021-10-04 06:06:44 字數 768 閱讀 6329

給定乙個正整數 p

求乙個最小的正整數 n,使得 n! 是 p 的倍數

第一行輸入乙個正整數t表示測試資料組數

接下來t行,每行乙個正整數p

輸出t行,對於每組測試資料輸出滿足條件的最小的n

412

48

124

4

這題要用到質因數分解,題解用了二分,其實用不用無所謂,首先,我們知道階乘是幾個數的乘積,那麼最直觀的判斷方法也就是將 p

pp 拆成幾個數的乘積,而且這些數無因子,所以考慮質因數分解,記錄每個質因子出現的次數,然後暴力判斷出現這些次數需要的最小階乘數 n

nn,不要忘了最後剩下的數可能大於 ans

ansan

s,所以最後還要取乙個 max

maxma

x,ac**如下:

#include

using

namespace std;

typedef

long

long ll;

intmain()

int tmp=

0,j;

for(j=i;

;j+=i)

if(tmp>=cnt)

break;}

ans=

max(ans,j);}

} cout<<

max(ans,n)

<}return0;

}

牛客小白月賽23 B 階乘

b.階乘 思路 其實就是把p質因數分解,然後對於每乙個質因數x,去二分出來最小的乙個n 含有x的個數大於等於p中的x的個數 對於每個二分的結果取最大值 include using namespace std typedef long long ll define me a,x memset a,x,...

牛客小白月賽23 B階乘(質因數分解)

題意 給出p,找出能整除p的最小n 解析 折騰了一下,四處找人問,總算明白了。先給出第一種解法。一 p是很大的,要暴力直接乙個乙個找也不可能。給出原理 假設a是b的倍數,如果b能分解出質因子p有q個,那麼在a中也能分解出質因子p,而且次數大於q個。所以根據這個,我們直接把p的素因子分解出來,記錄一下...

階乘 factorial 牛客小白月賽5

輸入資料共一行,乙個正整數n,意義如 問題描述 輸出一行描述答案 乙個正整數k,表示s的末尾有k個0 示例1複製 10複製 7題目讓求階乘最後有幾個0,即為該表示式的最後結果含有10的幾次方的因子,直接求的話,不太好求 不妨轉化一下思路,容易發現10的幾次方都有乙個通性 質因子只有2和5,顯然,階乘...