Closed habara-k closed 4 years ago
NTTもそうなんだけど、FPS<>と書かなくていいように構造体の内部に定数を持たせるのはどうでしょう
NTTもそうなんだけど、FPS<>と書かなくていいように構造体の内部に定数を持たせるのはどうでしょう
とりあえず先に言い訳を並べます
c++17以降なら FPS
とだけ書いても怒られない
定数をメンバに持つ場合、FPS
のコピーコストが上がる
定数をstaticに持つ場合、外部からmodを設定できない(FPSの中身のソースコードを直接いじればいいけど、例えば違うmodのFPSをテストしたいときCIどう回すの問題が...)
違うmodが共存できなくなる(必要かどうかは諸説)
modを含めて1つの型になるのが綺麗(宗教)
結論あんまりその変更は乗り気じゃないです
怒られないマジ?
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
cout << fixed << setprecision(10);
vector<NTT::Int> a = {1, 2, 3};
vector<NTT::Int> b = {2, 3, 4};
NTT ntt;
cout << ntt.multiply(a, b) << endl;
return 0;
}
これそっちの環境だと通りますか?
FPSは怒られないかも
ア NTTは無理 この辺よくわからないんですよね
型テンプレートの中で
や、まあ面倒なだけなので、理由があるなら全然いいと思います
タイプ数減らすためにconst消すか
ヨシ!
タイプ数減らすためにconst消すか
そんなに減らんかったのでこれなしで
cf. https://github.com/habara-k/ICPCLibrary/issues/32
DONE
Math
modintのリファクタ
int
で持つようにしたpow(mod-2)
をする代わりに~いい感じのコード~ 非再帰の拡張GCD? で計算するようにした