傳送門
題解:考慮先篩出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...