powering
コンテンツ
累乗って,いままで,
inline void pow(int a[N], long long n) { if (n == 1) { return; } else if (n%2) { int b[N]; REP (i, N) b[i] = a[i]; pow(b, n-1), mul(a, b); } else { mul(a, a), pow(a, n/2); } }
こんな,ふうに書いていた.
(配列を累乗しているのは大人の事情です.)
しかし,実は,別の書きかたもあった.
// initialize b = 1; while (n>1) { if (n%2) mul(b, a); mul(a,a), n /= 2; } mul(a,b);
こっちのほうが,断然短くて,見た目はカッコイイ.
# 可読性は悪いような...
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)