当前位置: 首页 > news >正文

洛谷P3846+P4195 BSGS及扩展BSGS模板题

1. BSGS

例题:P3846 【模板】BSGS / [TJOI2007] 可爱的质数

BSGS 的 oi wiki 介绍:链接

但是我感觉还是 chebs大佬的博客 更好理解。

示例程序:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;ll p, b, n, s;
unordered_map<ll, ll> mp;int main() {cin >> p >> b >> n;if (n == 1) {cout << 0 << endl;return 0;}s = ceill(sqrtl(p));for (ll i = 0, t = n; i < s; i++, t = t * b % p) {mp[t] = i;}ll bs = 1;for (int i = 0; i < s; i++) {(bs *= b) %= p;}for (ll i = 1, t = bs; i <= s; i++, t = t * bs % p) {auto it = mp.find(t);if (it != mp.end()) {ll l = i * s - (it->second);cout << l << endl;return 0;}}cout << "no solution\n";return 0;
}

双倍经验

2. 扩展BSGS(exBSGS)

例题:P4195 【模板】扩展 BSGS / exBSGS

exBSGS 的 oi wiki 介绍:链接

示例程序:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;ll gcd(ll a, ll b) {return b ? gcd(b, a%b) : a;
}// 返回 a^x = b(mod m) 的最小非负整数x,没有则返回-1
ll exBSGS(ll a, ll b, ll m) {a %= m, b %= m;if (b == 1 || m == 1)return 0;ll d, ax = 1, cnt = 0;while ((d = gcd(a, m)) > 1) {if (b % d)return -1;m /= d;b /= d;cnt++;(ax *= a / d) %= m;if (ax == b)return cnt;}unordered_map<ll, ll> mp;ll s = ceill(sqrt(m));for (ll i = 0, t = b; i < s; i++, t = t * a % m) {mp[t] = i;}ll base = 1;for (int i = 0; i < s; i++) {(base *= a) %= m;}for (ll i = 1, t = ax; i <= s; i++) {(t *= base) %= m;auto it = mp.find(t);if (it != mp.end())return cnt + i * s - (it->second);}return -1;
}ll a, p, b;int main() {while (~scanf("%lld%lld%lld", &a, &p, &b) && a+p+b) {ll res = exBSGS(a, b, p);if (res == -1)puts("No Solution");elseprintf("%lld\n", res);}return 0;
}
http://www.jsqmd.com/news/757787/

相关文章:

  • 别再为选线发愁了!手把手教你用MATLAB/Simulink仿真小电流接地故障(附Coiflet4小波分析代码)
  • Autovisor:智慧树网课自动化学习的终极解决方案
  • 精简数据管道:如何使用 PySpark 和 WhyLogs 进行高效的数据分析和验证
  • UAV Log Viewer:一站式无人机日志分析与可视化专业工具
  • 4大核心技术突破:DXVK Vulkan转换层的高效优化实战指南
  • 收藏!小白程序员转行AI必看:核心岗位、薪资与进阶指南
  • 从无人机航拍到古迹数字化:聊聊SFM技术在实际项目中的踩坑与优化
  • Claude API拦截器:优化大模型交互的轻量级中间件实践
  • 苏州鼎轩废旧电子产品:昆山诚信的工厂电子垃圾回收公司推荐几家 - LYL仔仔
  • 闲置京东e卡回收,轻松变现不浪费 - 京顺回收
  • 简化物业数据管理:使用 Indexify 进行高级数据提取与检索
  • SVPWM仿真进阶:从‘马鞍波’到‘羊角波’,深入理解扇区判断与时间分配的逻辑差异
  • 大模型革命:小白程序员必备指南,收藏学习未来技能!
  • Minecraft区块修复工具终极指南:5大场景教你如何拯救损坏存档
  • 使用taotoken后大模型api调用的延迟与稳定性实际体验观察
  • 睿家诚家具维修:常熟靠谱的软硬包装饰定制施工公司找哪家 - LYL仔仔
  • AI驱动SEO的关键词优化实践与策略探索
  • 统帅五一销售战报:懒人三筒霸榜双料,多品类高增领跑年轻家电市场 - 速递信息
  • 24美元比特币USB矿机实测与挖矿原理分析
  • Linux服务器运维:如何通过grub参数pci=noaer禁用OS AER,让BMC正确记录PCIE错误日志
  • OpenWrt路由器插件:3分钟解锁网易云音乐所有灰色歌曲
  • 从设备配方到生产报表:手把手教你用Codesys时间类型构建完整时间轴
  • 体验Taotoken聚合端点在高峰期的请求延迟与稳定性
  • 如何实现高效Windows内存监控与清理:Mem Reduct深度技术解析
  • 5分钟快速上手!泰坦之旅无限仓库终极管理工具TQVaultAE完全指南
  • 萧山区教育培训机构综合实力排名(2026):品牌深度测评 + 选课避雷 - 浙江行业评测
  • AntiDupl:专业级重复图片检测工具,轻松释放磁盘空间
  • DDrawCompat:让经典游戏在Windows 11上完美运行的兼容性修复方案
  • 本地AI聊天伴侣LocalChat:离线部署、隐私保护与实战指南
  • 高效构建思维导图HTML模板:markmap html.ts模块的5个进阶实战技巧