<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2024.10.16 鮮花

      PRAGMATISM -RESURRECTION

      憑什么沒詞就不是好歌?。?!

      取模優化

      就不講怎么減少取模了。

      比較廣為流傳的有兩種,Barrett reduction,Montgomery Algorithm。

      對于固定常數模數,計算機已經優化的很好了,一般不會有太大效果(確實有,用 Barrett reduction 有時可以卡常)。

      對于輸入的固定模數(即不會改變),可以用一下算法優化。

      Barrett reduction:

      一句話總結,比較有用,比較好寫

      考慮對于 \(a\bmod m\),可以用 \(a-m\lfloor \frac{a}{m}\rfloor\),但是直接計算 \(\lfloor \frac{a}{m}\rfloor\),由于除法的常數,并不會快。

      眾所周知,不能精確計算的就粗略計算,考慮除以 \(2^k\) 是快的,因為可以用位運算,于是我們考慮將 \(\lfloor \frac{a}{m}\rfloor\) 用除以 \(2^k\) 估算。

      具體的,設 \(base=\lfloor \frac{2^k}{m} \rfloor\),于是 \(\lfloor \frac{a}{m}\rfloor\) 可以粗略計算為 \(\lfloor \frac{base*a}{2^k}\rfloor\)

      優點是簡潔好寫,缺點是有一定錯誤率,且需要用 __int128。

      錯誤率:顯然,\(\lfloor \frac{base*a}{2^k}\rfloor \le \lfloor \frac{a}{m} \rfloor\) 對于 \(k\)\(64\) 時,\(m\)\(10^9\) 左右的模數,極限值域在 \(10^{18}\) 時,用 __uint128_t 存儲 \(base\),在測試了 \(10^{10}\) 組純隨機數據中,\(\lfloor \frac{a}{m} \rfloor - \lfloor \frac{base*a}{2^k}\rfloor \le 1\),可以加上判斷來減掉誤差(雖然會變慢)。

      Montgomery Algorithm:

      一句話總結,卵用沒有。

      考慮對于加減法,顯然可以用判斷來代替取模,對于乘法(\(ab \bmod m\)),我們考慮優化。

      這里我們需要 \(m\perp 2\)。

      \(R=2^k > m,a'=aR \bmod m,b'=bR \bmod m\)

      顯然有 \(abR \equiv a'b'R^{-1} \pmod m,a'R^{-1}\equiv aR^2 \pmod m,b'R^{-1}\equiv bR^2 \pmod m\),而 \(R^2 \bmod m\) 是可以預處理的,所以我們只要能夠快速求出 \(xR^{-1}\bmod m\) 就可以快速求出 \(a',b'\),進而求出 \(abR,ab\)

      如何求出 \(xR^{-1}\) ,考慮求最小的 \(k\) 滿足 \(R | x+km\),在將 \(R\) 除掉即可,\(k\equiv -xm^{-1} \pmod R\),提前處理 \(m^{-1} \bmod R\)即可。

      優點是不用 __int128,并且實現精細的話可能更快,缺點是必須精細實現,要封裝 \(modint\) 來減少轉換,細節較多(反正我調了一下午還不如本地動態模數暴力快,提交比固定模數略慢)。

      唯一的作用沒準就是做模板題 at_arc148_f。

      速度測試以后會補,有簡單的本地評價: Barrett reduction 未加判斷。

      固定模數: \(默認=Barrett reduction<Montgomery Algorithm\)

      非固定數: \(Barrett reduction<默認<Montgomery Algorithm\)

      學校 OJ 上固定模數 Montgomery Algorithm 略慢于默認,Barrett reduction 略快于默認。

      Barrett reduction,Montgomery Algorithm 都不會受模數是否固定影響。

      Upd:
      給一個板子:

      Mbs = (__int128(1) << 64) / MOD; // init
      int Mod(llt x){ return (x -= (x * Mbs >> 64) * MOD) >= MOD ? x - MOD : x; }
      
      P


      posted @ 2024-10-16 21:44  xrlong  閱讀(100)  評論(3)    收藏  舉報

      Loading

      主站蜘蛛池模板: 国产日韩精品视频无码| 不卡一区二区三区视频播放| 国产初高中生在线视频| 亚洲综合在线日韩av| 亚洲另类在线制服丝袜国产| 99国产精品永久免费视频| 女人与牲口性恔配视频免费| 狠狠爱俺也去去就色| 亚洲综合不卡一区二区三区 | 狠狠综合久久av一区二| av无码精品一区二区乱子| 久久99精品久久久久麻豆| 国产大陆av一区二区三区| 久热这里只有精品12| 国产性一交一乱一伦一色一情 | 无码熟妇人妻av在线电影| 国产不卡一区二区在线| 久久综合激情网| 国产成人a在线观看视频免费| 国产精品视频亚洲二区| 日韩人妖精品一区二区av| 日韩在线视频线观看一区| 人人入人人爱| 国产精品中文一区二区| 桃江县| 色偷偷亚洲精品一区二区| 亚洲男人AV天堂午夜在| 不卡高清AV手机在线观看 | 免费人成网站免费看视频| 东京热加勒比无码少妇 | 国内揄拍国内精品对久久| 成人免费xxxxx在线观看| 无码av永久免费专区麻豆| 灵石县| 国产中文字幕精品在线| 免费观看全黄做爰大片| 4399理论片午午伦夜理片| 国产精品国产精品偷麻豆| 国产精品久久久久久久久电影网 | 人妻丰满熟AV无码区HD| 在线观看潮喷失禁大喷水无码|