题解

BSGS直接解出a和b来即可

代码

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int, int>
#define pdi pair<db, int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define eps 1e-8
#define mo 974711
#define MAXN 1000005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template <class T>
void read(T &res) {
res = 0;
char c = getchar();
T f = 1;
while (c < '0' || c > '9') {
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template <class T>
void out(T x) {
if (x < 0) {
x = -x;
putchar('-');
}
if (x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
int P, g, S;
int inc(int a, int b) { return a + b >= P ? a + b - P : a + b; }
int mul(int a, int b) { return 1LL * a * b % P; }
int fpow(int x, int64 c) {
int res = 1, t = x;
while (c) {
if (c & 1) res = mul(res, t);
t = mul(t, t);
c >>= 1;
}
return res;
}
struct node {
int x, p, next;
} E[100005];
int head[mo + 5], sumE;
void add(int x, int p) {
int u = x % mo;
E[++sumE].next = head[u];
E[sumE].x = x;
E[sumE].p = p;
head[u] = sumE;
}
int Query(int x) {
int u = x % mo;
for (int i = head[u]; i; i = E[i].next) {
if (E[i].x == x) return E[i].p;
}
return -1;
}
int64 BSGS(int A, int C) {
sumE = 0;
memset(head, 0, sizeof(head));
int t = 1;
for (int i = 0; i < S; ++i) {
if (t == C) return i;
add(mul(t, C), i);
t = mul(t, A);
}
int h = t;
for (int i = 1;; ++i) {
int x = Query(h);
if (x != -1) return 1LL * i * S - x;
h = mul(h, t);
if (i > P / S) break;
}
}
void Solve() {
int A, B;
read(A);
read(B);
int64 a = BSGS(g, A), b = BSGS(g, B);
out(fpow(g, a * b % (P - 1)));
enter;
}
int main() {
#ifdef ivorysi
freopen("f1.in", "r", stdin);
#endif
read(g);
read(P);
S = sqrt(P);
int T;
read(T);
while (T--) {
Solve();
}
return 0;
}

最新文章

  1. angular学习资源
  2. this,this,再次讨论javascript中的this,超全面
  3. JS之script标签
  4. Apache Thrift - 可伸缩的跨语言服务开发框架
  5. C++ 转型
  6. Ubuntu中Qt+opencv图像显示
  7. 解题的小问题(C++)
  8. android消息推送(Jpush)
  9. jQuery框架Ajax常用选项
  10. 逆向集录_00_不同程序OEP特征总结
  11. GPU渲染流水线的简单概括
  12. Python 位操作运算符
  13. Angular ( 一 ) angular的安装
  14. Nginx用户权限验证管理
  15. POJ1274 The Perfect Stall
  16. 【文文殿下】P3737 [HAOI2014]遥感监测
  17. 适用于 Windows VM 的 Azure 示例基础结构演练
  18. notepad++添加插件管理器
  19. TextView
  20. as2 针对加载进来的swf操作

热门文章

  1. 51Nod 1287 加农炮 (线段树)
  2. hdu 1540 Tunnel Warfare (线段树 区间合并)
  3. 开始学习Scheme
  4. 洛谷P3613 睡觉困难综合征(LCT,贪心)
  5. 【BZOJ1487】[HNOI2009]无归岛(动态规划)
  6. 洛谷 P1073 最优贸易 解题报告
  7. 解题:CF1130E Wrong Answer
  8. 错误日志收集sentry的安装与简单使用
  9. spring boot 事务配置
  10. Dubbo学习笔记9:Dubbo服务提供方启动流程源码分析