看德國戰墨西哥去了結果發現比賽只剩下30分鐘……當然之後又思考這題挺久也還是不會做。看了一下題解,覺得這個做法挺厲害的,在這裡記錄一下:
原式實際上就是:(\(k += 1\)) \(\prod c\left ( a_ + k, a_ \right )\)
為什麼是這樣呢?我們首先注意到,將原數因式分解了之後,每一位質因子取任意 \( <= a_\) 的數,組合起來都是乙個合法因數。我們將取出來的任意數看作是在進行選擇。那麼如果我在其中選擇了兩個數,我們可以看做是先選取了大的數。這樣就可以代表:對於含有\(p_^}\) 因子的約數而言,我們找到了乙個它的含有因子\(p_^}\)的約數。所以上面的式子就可以統計出乙個數的約數個數和的約數個數和的……
然後只需要考慮怎樣實現。首先篩掉1e6以內的素數。這樣的話,剩下的 \(n\) 可能的情況只有三種:\(p^, p * q, p\) 其中 \(p, q\) 均為質數。這裡運用的是miller_rabin。要保證正確性還應當加入二次探測~
#include usingnamespace
std;
#define maxx (1e6 + 5)
#define maxn 1000020
#define ll long long
intpri[maxn], tot;
const
int p = 998244353
;int
m, inv[maxn], cnt[maxn];
ll n, k;
bitset
is_pri;
void
get_pri()
}}ll mul(ll x, ll times, ll p)
ll qpow(ll x, ll times, ll p)
intc(ll n, ll m)
intmain()
}if(n > 1
)
cnt[++ m] = 1
;
if(!tag) cnt[++ m] = 1
; }
}int ans = 1
;
for(int i = 1; i <= m; i ++)
ans = 1ll * ans * c(cnt[i] + k, cnt[i]) %p;
printf(
"%d\n
", ans);
return0;
}
洛谷7月月賽題解(2020)
醜話說在前面,我只寫了前三個的題解 因為有人告訴我第四題沒有價值!標題黨,廣大oier看了直呼內行!真就簽到題唄。反正就是把冪魔改成開根向下取個整。看 吧。int main 混,混凝土?擦汗 哎呀不就等腰三角形嗎,分類討論一手等腰和等邊,選取 1 2 len 1 的邊進行一下組合運算,就像我這樣的蒟...
洛谷 9月月賽
題目描述 眾所周知,在一些特殊的部門,如果密碼能夠讓乙個人就解開,就會非常不安全。pic pre invoked code,預生成密碼 誕生了。這個密碼比較安全,是因為它必須由三個人保管。系統首先預先生成三個大整數a b c,計算出它們的與and 或or 和sum並儲存,然後將a b c分別告訴這三...
洛谷5月月賽
n堆石子,每次可以從第i堆中取走乙個當且僅當ni ni 1 第0堆視作0個 拿不了就輸了。問先手贏還是後手贏。奇偶性問題。不管如何分布,必定全部被拿完。include inline char gc return s inline int read while c 0 c 9 return x f i...