題面:
給出乙個整數n,求有4^n個因數的最小整數,結果對998244353取餘,找到這個數字就能讓csy獲得幸福。(n<=100000)
(原題並不是csy)去打acm比賽,6道水題,2道藍題,2道紫題,這道題大概在紫題水平?(我太菜了)
平常我akm壓得賊(bu)穩【霧】,考試翻車加**只打出來4道(丟人)
看一眼題,第乙個思路是質因數分解,因子個數即為每個質數的指數+1。
首先把盡可能多的質數塞進乙個小根堆裡,
4^n可以化為2^2n,遞推做法,每次為了讓n走一位,把堆頂取出,讓答案乘以這個數,
然後把取出的數乘以他本身塞回小根堆裡.
這樣做的原因是,設ans=p1^c1 + p2^c2 + p3^c3...pn^cn;
2^2n = (c1+1)(c2+1)(c3+1).....(cn+1)
因為左邊的2^2n我們大概可以猜到右邊是(1+1)(3+1)(7+1)(15+1)之類的形式
2^1 =(1+1) 所以我們選最小質因子的2
2^2=(1+1)(1+1)=(3+1) (3+1)意味著乘以2^2,(1+1)(1+1)意味著乘以3, 3更小所以選3.
2^3= (1+1)(1+1)(1+1) = (3+1)(1+1) 依序是乘以5或者乘以2^2,後者更小所以是(1+1)(3+1)
模擬就模擬到這
上面的那個堆存的就是為了讓n走一位可以乘以哪些數,乘完了往回塞乘以它本身的本質是讓存進去的數的指數為2的次方
(1+1)變成(3+1)乘以的就是2^2,(3+1)變成(7+1)乘以的是2^4
正確性得證。
維護優先佇列的時復為n logn,複雜度正確。
考試的時候腦子一抽質數篩只篩到200000,前面的質數指數過大爆掉longlong,到死沒有發現bug。
(結論就是csy無法獲得幸福)
**:
#include#define ll long long#define p 998244353
using
namespace
std ;
long
long pri[500010],psz,tag[500010
],n;
void
prime()
for(int j=1;j<=psz;j++)
} }priority_queue
long> q;//
我忘記小根堆怎麼寫了,存個負數水一下 = =
中北大學ACM ICPC
size medium 今天週六,整天複習考研來著,今天稍微休息一下,順便把剛做的圖書管理 完善了一下,今天很讓人興奮的是以前的一位學長今天給我提了點意見,下午就過來更新 了,今天主要是更新了一下主頁布局的問題,放大或縮小不會出現布局錯亂的問題。另外,新增了乙個google自定義搜尋框,可以對中北大...
遇強則強 中北大學2023年新生賽
include using namespace std typedef long long ll const ll maxn 1000000 5 ll h maxn ll st maxn ll r maxn l maxn int main ll t 0 for ll i 0 i0 h st t 1 ...
北大ACM暑期培訓感想
部落格從7月17日就沒更新了,18日開始參加了半個月的acm培訓,然後一直刷老師課上講過的題目。智商捉急,現在剩下計算幾何這章不想刷了。收穫很多,鍛鍊了思維,學了幾個演算法,增加了受虐能力,培養了良好的心理素質。打了瀋陽和北京的網路賽,均未打進網路賽。北京賽區有兩道水題,另一位隊友告訴我思路,我拍 ...