NOIP校內模擬 階乘

2021-08-29 18:46:28 字數 1060 閱讀 8113

描述

有n個正整數a[i],設它們乘積為p,你可以給p乘上乙個正整數q,使pq剛好為正整數m的階乘,求m的最小值。

輸入共兩行。

第一行乙個正整數n。

第二行n個正整數a[i]。

輸出共一行

乙個正整數m。

樣例輸入16

樣例輸出3提示

樣例解釋:

當p=6,q=1時,pq=3!

【資料範圍與約定】

對於10%的資料,n<=10

對於30%的資料,n<=1000

對於100%的資料,n<=100000,a[i]<=100000

我們可以二分m,m是具有單調性的

考慮如何check

顯然只要這個m分解質因數過後,每個因子的個數大於等於原有的因子就是可行的

我們回到乙個問題 如何快速求出乙個數內所含的各個質數的個數

假設要求27中所含3的個數

27!=1*2*...*27 

包含 1 個 3 的數有 27/(3^1)=9 個

包含 2 個 3 的數有 27/(3^2)=3 個

包含 3 個 3 的數有 27/(3^3)=1 個

總共:9+3+1=13 個

所以 27!裡面有 13 個 3 相乘。

這樣就可以求出來了qwq

#include#define n 100005

using namespace std;

int n,prime[n],big[n],cnt,tong[n],a[n];

bool is[n];

int pm;

inline void pick(int n)

for(int j=1;j<=cnt&&i*prime[j]<=n;j++) //列舉前面所有素數

}}void split(int x)

}inline bool check(int x)

if(cur>n;

for(int i=1;i<=n;i++)

int l=pm,r=1e9;

while(l

NOIP校內模擬 階乘

描述 有n個正整數a i 設它們乘積為p,你可以給p乘上乙個正整數q,使pq剛好為正整數m的階乘,求m的最小值。輸入共兩行。第一行乙個正整數n。第二行n個正整數a i 輸出共一行 乙個正整數m。樣例輸入16 樣例輸出3提示 樣例解釋 當p 6,q 1時,pq 3!資料範圍與約定 對於10 的資料,n...

NOIP校內模擬 塔

我們可以這樣考慮 x 必定是由若干個立方數拼起來的 因此我們可以逆著求 只需關心每次取哪個立方數即可 設a是最大的 a 使得 a 3 不超過 m 分析樣例 我們發現在第一次的時候 就可以取a或者a 1 那第一次取a 2 a 3.行不行呢?1.用 a,剩下m a 3 2.用 a 1,x 最大為 a 3...

NOIP校內模擬 航班

描述 l因為業務繁忙,經常會到處出差。因為他是航空公司的優質客戶,於是某個航空 公司給了他乙個優惠券。他可以利用這個優惠券在任何乙個國家內的任意城市間免費旅行,當他的路線跨國 才會產生費用。l有乙個航空公司的 表與航線。而且每個城市出發都能到所有的城 市,2 個城市間可能有不止乙個航班,乙個國家內的...