LightOJ 1325 Distributing Chocolates
2015-11-19 12:24
218 查看
解高次同余方程:an≡b(modp)a^n \equiv b \pmod{p}
用baby-step giant-step算法,以给力的方法遍历aka^k
复杂度logp\log p
用baby-step giant-step算法,以给力的方法遍历aka^k
复杂度logp\log p
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int p = 100000007; ll fast_pow(ll x, int n) { ll res = 1; while(n) { if(n & 1) res = (res * x) % p; x = (x * x) % p; n >>= 1; } return res; } int solve(int a, int b) { int m = ceil(sqrt(p)); map<int,int> M; ll mid = 1; for(int i = 0; i < m; i++) M[mid] = i, mid = (mid * a) % p; ll t = fast_pow(fast_pow(a, p - 2), m); for(int i = 0; i < m; i++) { if(M.find(b) != M.end()) return i * m + M[b]; b = (b * t) % p; } } int main() { int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { int k, res; scanf("%d%d", &k, &res); printf("Case %d: %d\n", ca, solve(k, res)); } return 0; }
相关文章推荐
- SQL Server 2014 使用(持续更新中···)【目录】
- 用pypy运行ryu
- CContextMenuManager上下文菜单管理器以及为菜单添加图标
- codeforce 597C-Subsequences(dp+树状数组)
- [Java] 单例模式的学习笔记(Java版)
- zookeeper学习总结
- zookeeper学习总结
- iOS app上架 审核 , 更新等问题
- 如何提取谷歌浏览器上的插件。
- Method Swizzling和分类的妙用–从AppDelegate轻量化处理说起
- 关于scanf()
- java中"no enclosing instance of type * is accessible"的解决方法
- 让toad帮我们整理与Oracle之间的点点滴滴
- JavaWeb三大组件之Servlet初次见面及生命周期
- C++中创建对象的两种方法
- 只需要一步即可将xml数据转化成自定义类的对象模型
- FIS3使用官方例子流程
- hdoj 偶数求和 2015 (简单数学题)
- poj 2188 Cow Laundry 求逆序数水题
- redis 动态添加移除节点