关于BSGS
  • 板块学术版
  • 楼主HappyJaPhy
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/12/3 10:39
  • 上次更新2023/12/3 12:33:52
查看原帖
关于BSGS
373905
HappyJaPhy楼主2023/12/3 10:39
  • 原题链接
  • 为什么 BSGS 的计算 (AB)L,0≤L≤B,B=p(A^B)^L,0\le L\le B,B=\sqrt p 的代码要逆序枚举呢?也就是以下代码的 66 到 88 行。
inline int BSGS(int a, int b, int p) {
    a %= p, b %= p;
    if (b == 1 || a == b) return b != 1;
    map<int, int> mp;
    int B = ceil(sqrt(p)), res = inf;
    for (int i = B; i; i--) {
        mp[ksmi(a, i * B, p)] = i * B;
    }
    for (int i = 0; i <= B; i++) {
        if (mp.find(b * ksmi(a, i, p) % p) != mp.end()) {
            res = min(res, mp[b * ksmi(a, i, p) % p] - i);
        }
    }
    if (res == inf) {
        return -1;
    } else {
        return res;
    }
}

2023/12/3 10:39
加载中...