$des$

1、给定y、z、p,计算y^z mod p 的值;

2、给定y、z、p,计算满足xy ≡z(mod p)的最小非负整数x;

3、给定y、z、p,计算满足y^x ≡z(mod p)的最小非负整数x。

$sol$

模板+模板+模板

#include <bits/stdc++.h>

using namespace std;

#define LL long long

LL n, k;

LL Ksm(LL a, LL b, LL p) {
LL ret = ;
while(b) {
if(b & ) ret = ret * a % p;
a = a * a % p;
b >>= ;
}
return ret;
} void Work1() {
for(int i = ; i <= n; i ++) {
LL y, z, p; cin >> y >> z >> p;
cout << Ksm(y, z, p) << "\n";
}
} LL Exgcd(LL a, LL b, LL &x, LL &y) {
if(b == ) {
x = , y = ; return a;
}
LL g = Exgcd(b, a % b, x, y);
LL tmpx = x; x = y; y = tmpx - a / b * y;
return g;
} void Work2() {
for(int i = ; i <= n; i ++) {
LL y, z, p; cin >> y >> z >> p;
LL x, k;
LL gcd = Exgcd(y, p, x, k);
if(z % gcd) {
puts("Orz, I cannot find x!"); continue;
}
LL r = z / gcd, d = p / gcd;
x *= r;
x = ((x % d) + d) % d;
cout << x << "\n";
}
} map <LL, int> Map; void Work3() {
for(int i = ; i <= n; i ++) {
LL y, z, p; cin >> y >> z >> p;
// y ^ x = z (mod p)
LL m = sqrt(p);
if(m * m != p) m ++;
// y ^ {im} = z * y ^ j (mod p)
if(!(y % p)) {
puts("Orz, I cannot find x!"); continue;
}
Map.clear();
Map[z % p] = ;
LL ans = z % p;
for(int i = ; i <= m; i ++) {
ans = (ans * y) % p;
Map[ans] = i;
}
LL f = Ksm(y, m, p);
bool flag = ;
ans = ;
for(int i = ; i <= m; i ++) {
ans = ans * f % p;
if(Map[ans]) {
LL O = i * m - Map[ans];
O = (O % p + p) % p;
cout << O << "\n";
flag = ;
break;
}
}
if(flag) {
puts("Orz, I cannot find x!");
}
}
} int main() {
cin >> n >> k;
k == ? Work1() : (k == ? Work2() : Work3()); return ;
}

最新文章

  1. 为什么 Java 8 中不再需要 StringBuilder 拼接字符串
  2. java基础-继承:矩形体积类问题
  3. django admin中保存添加的数据提示need string or buffer, int found
  4. volatile和const
  5. HTML5 本地存储 LocalStorage
  6. Codeforces Gym 100733H Designation in the Mafia flyod
  7. 为一张PCI卡打通经络的过程
  8. 【开源】封装HTML5的localstorage
  9. 转:php的memcache和memcached扩展区别
  10. VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式
  11. js检测浏览器中是否安装了flash播放插件
  12. 《STL源代码剖析》---stl_hash_set.h阅读笔记
  13. eclipse安装
  14. 解决在onCreate()过程中获取View的width和Height为0的方法
  15. ES6 的 一些语法
  16. vue-cli3.0+node.js+axios跨域请求session不一样的问题
  17. Vue+elementUI开发中 Cannot read property &#39;resetFields&#39; of undefined 问题解决以及原因分析
  18. BZOJ.3495.[PA2010]Riddle(2-SAT 前缀优化建图)
  19. JavaScript -基础- 函数与对象(三)Date对象
  20. Windows 消息【二】窗口函数

热门文章

  1. Centos7通过yum安装jdk8
  2. JAVAWEB之增删改查
  3. 记录一次使用NPOI遇到的问题
  4. “分而治之”,一种AI和动画系统的架构
  5. 解决WPF下popup不随着window一起移动的问题
  6. centos从零开始安装elasticSearch
  7. 设计模式之(六)原型模式(ProtoType)
  8. 下拉框等需要显示上下箭头切换的CSS样式
  9. 什么是MVC框架?
  10. Django 之restfromwork 序列化组件实现数据增删查改