2019HDU多校 6223 (最小質因子指數冪)

2021-09-25 18:24:31 字數 1666 閱讀 2687

傳送門

題解:考慮先篩出1e4

1e41e

4以內的素數,對於每個輸入的 n

nn 先除掉 1e4

1e41e

4 以內的素因子(如果存在的話),並且更新答案。

如果除完後n

nn 還大於1,說明存在大於1e4

1e41e

4的素因子,而且這些素因子的最多隻會有4

44次方,因為更大的話就會超過

1 e18

1e18

1e18

,因此剩下的n

nn只會是 p

pp2 , p

pp3, p

pp4。

p

pp2和p

pp4可以一起判斷, p

pp3則可以通過二分判斷

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

#define inf 0x3f3f3f3f

#define lson l,mid,rt<<1

#define rson mid+1,r,rt<<1|1

#define mem(a,b) memset(a,b,sizeof(a));

#define lowbit(x) x&-x;

#define debugint(name,x) printf("%s: %d\n",name,x);

#define debugstring(name,x) printf("%s: %s\n",name,x);

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

double eps =

1e-6

;const

int maxn =

1e4+5;

const

int mod =

1e9+7;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return x*f;

}int prime[maxn]

,tot =0;

bool pri[maxn]

;void

init()

}}}}

ll n;

intmain()

ans =

min(ans,cnt);}

}if(n >1)

else

else

if(mid*mid*mid < n)

else

break;}

if(mid*mid*mid == n) ans =

min(ans,3)

;else ans =1;

}}printf

("%d\n"

,ans);}

}

2019HDU多校Path 最短路最小割

給出乙個 n 個頂點 m 條邊的圖,要求阻塞一些邊,使得從 1 到 n 的最短路變長,求阻塞的邊長度和的最小值,不必保證阻塞後可達。很顯然,要阻塞的邊肯定在最短路圖上,先跑一遍單源最短路,求出最短路圖。要使最短路變長,肯定要同時切斷原有的所有最短路,又要是長度 相當於流量 和最小,很容易想到就是求最...

2019HDU多校 Path 最短路轉最小割

hdu6852 之前見過類似的題,所以寫起來很輕鬆 因為要讓最短路邊長,所以可以先跑最短路 滿足d is u dis v d i w dis u dis v d i w dis u di s v d i w的邊就是最短路邊 這些最短路邊形成一張網路 在上面跑最小割,代表的就是割斷每一條最短路 inc...

2019HDU多校第7場 構造

假設現在你在準備考試,明天的考試有 n 道題目,對於分值為 i 的題目至少複習 i 1 小時才能做對,已知總分為 m 求確保完成 k 道題的最少時間。手動嘗試一下,發現答案都是 aabbbb 這樣的形式。例如,5 18 3 rightarrow 6 6 7 7 7,5 19 3 rightarrow...