$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 ;
}

51: Luogu 2485 模板的更多相关文章

  1. [luogu P3384] [模板]树链剖分

    [luogu P3384] [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点 ...

  2. Luogu P2742 模板-二维凸包

    Luogu P2742 模板-二维凸包 之前写的实在是太蠢了.于是重新写了一个. 用 \(Graham\) 算法求凸包. 注意两个向量 \(a\times b>0\) 的意义是 \(b\) 在 ...

  3. luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)

    luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...

  4. Luogu [P3367] 模板 并查集

    [模板]并查集 题目详见:[[P3367][模板]并查集] (https://www.luogu.org/problemnew/show/P3367) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...

  5. Luogu P3381 (模板题) 最小费用最大流

    <题目链接> 题目大意: 给定一张图,给定条边的容量和单位流量费用,并且给定源点和汇点.问你从源点到汇点的最带流和在流量最大的情况下的最小费用. 解题分析: 最小费用最大流果题. 下面的是 ...

  6. [Luogu] 【模板】点分治1

    // 模板题#include <bits/stdc++.h> ; , head[N], dis[N]; ]; int size[N], maxson[N], Root; bool vis[ ...

  7. luogu P5410 模板 扩展 KMP Z函数 模板

    LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...

  8. luogu P4887 模板 莫队二次离线 莫队 离线

    LINK:模板莫队二次离线 很早以前学的知识点 不过 很久了忘了. 考虑暴力 :每次莫队更新的时候 尝试更新一个点到一个区间的答案 可以枚举二进制下位数为k的数字 看一下区间内的这种数字有多少个. 不 ...

  9. 51 EEPROM操作模板

    各个型号容量及扇区请查datasheet #include <reg52.h> #include "intrins.h" typedef unsigned char b ...

随机推荐

  1. windows上 nginx 配置代理服务,配置多域名,以及最简单实现跨域配置

    Nginx,不用多说啦,大家都熟悉的不能再熟悉了,它是一款轻量级的高性能Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,最近在本地研究将nginx和resin配合使用,使服务 ...

  2. 封装:Windows系统文件图标

    原文:封装:Windows系统文件图标 用途:用于获取文件系统默认图标 using System; using System.Collections.Generic; using System.Dra ...

  3. How to signout from an Azure Application?(转载)

    问: I have created a Azure AD application and a Web App. The Azure AD Application uses AAD Authentica ...

  4. SetWindowLong函数GetWindowLong函数

    这两个函数具体应用如下:SetWindowLong函数GetWindowLong函数 Delphi窗口化游戏 var Thwnd:HWND;//声明变量 句柄变量 devmodel1:DEVMODE; ...

  5. java基础 接口常量

    /** * 接口当中也可以定义"成员变量", 但是必须使用public static final三个关键字进行修饰 * 从效果上看,这其实就是接口的[常用] * 格式: * pub ...

  6. rsync 排除指定目录

    背景 将Server1上的数据同步到Server2: Server1目录结构: /us_data/yahoo └── qlib ├── calendars ├── dataset_cache ├── ...

  7. IntelliJ Cannot find declaration to goto----解决方案

    系统中已经有了该类库,还是找不到类提示 close the project in intellij. close intellij. go to the project folder and dele ...

  8. HTNL5-ARIA role属性

    WAI-ARIA Web Accessibility Initiative’s Accessible Rich Internet Applications 无障碍网页倡议–无障碍的富互联网应用,也简称 ...

  9. Linux系统MySQL的常用操作命令

    安装好MySQL服务后添加环境变量: #vi /etc/profile export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME ...

  10. vavr:让你像写Scala一样写Java

    本文阅读时间大约7分钟. Hystrix是Netflix开源的限流.熔断降级组件,去年发现Hystrix已经不再更新了,而在github主页上将我引导到了另一个替代项目--resilience4j,这 ...