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