51: Luogu 2485 模板
$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 模板的更多相关文章
- [luogu P3384] [模板]树链剖分
[luogu P3384] [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点 ...
- Luogu P2742 模板-二维凸包
Luogu P2742 模板-二维凸包 之前写的实在是太蠢了.于是重新写了一个. 用 \(Graham\) 算法求凸包. 注意两个向量 \(a\times b>0\) 的意义是 \(b\) 在 ...
- luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)
luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...
- Luogu [P3367] 模板 并查集
[模板]并查集 题目详见:[[P3367][模板]并查集] (https://www.luogu.org/problemnew/show/P3367) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...
- Luogu P3381 (模板题) 最小费用最大流
<题目链接> 题目大意: 给定一张图,给定条边的容量和单位流量费用,并且给定源点和汇点.问你从源点到汇点的最带流和在流量最大的情况下的最小费用. 解题分析: 最小费用最大流果题. 下面的是 ...
- [Luogu] 【模板】点分治1
// 模板题#include <bits/stdc++.h> ; , head[N], dis[N]; ]; int size[N], maxson[N], Root; bool vis[ ...
- luogu P5410 模板 扩展 KMP Z函数 模板
LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...
- luogu P4887 模板 莫队二次离线 莫队 离线
LINK:模板莫队二次离线 很早以前学的知识点 不过 很久了忘了. 考虑暴力 :每次莫队更新的时候 尝试更新一个点到一个区间的答案 可以枚举二进制下位数为k的数字 看一下区间内的这种数字有多少个. 不 ...
- 51 EEPROM操作模板
各个型号容量及扇区请查datasheet #include <reg52.h> #include "intrins.h" typedef unsigned char b ...
随机推荐
- NetCore2.2开发环境搭建和2008R2部署环境搭建
开发环境: 开发工具:VS2017 系统:Win10 64位 Skd下载地址: https://dotnet.microsoft.com/download 3个都下载下载,安装dotnet-sdk-2 ...
- [Linux] - 服务器/VPS一键检测带宽、CPU、内存、负载、IO读写
一.SuperBench.sh VPS/服务器一键检测带宽.CPU.内存.负载.IO读写等的脚本: wget -qO- https://raw.githubusercontent.com/oooldk ...
- 文件的读取(txt文件)
一.将读取文件夹内容,变为字典保存,代码如下: def read_class_names(class_file_name): '''loads class name from a file''' na ...
- datax分析与思考(一)
Datax 总体流程图 先看执行的第一个步骤: 在最上层抽象类,这个里面相当于获取全局公共信息,java入口部分就是这个Engine的main方法直接启动 Engine 启动 com.alibaba. ...
- Java自学-异常处理 Exception
Java 异常 Exception 异常定义: 导致程序的正常流程被中断的事件,叫做异常 步骤 1 : 文件不存在异常 比如要打开d盘的LOL.exe文件,这个文件是有可能不存在的 Java中通过 n ...
- Java自学-数字与字符串 字符串
Java中的字符串String 示例 1 : 创建字符串 字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象 常见创建字符串手段: 每当有一个字面值出现的时候,虚拟机就会创 ...
- Prime Path POJ-3126
The ministers of the cabinet were quite upset by the message from the Chief of Security stating that ...
- 【总结】web工作代码分类整理(持续更新)
文件.blob 文件下载失败,将Blob对象转换为Json,处理异常错误? 使用FileReader,核心代码: var reader = new FileReader() reader.onload ...
- Android ADB关闭Selinux ( adb shell setenforce 0 )
adb shell setenforce 0 setenforce 0:设置SELinux 成为permissive模式 临时关闭selinux的 在eng/userdebug版本中使用setenfo ...
- selenium登录简单的网站
import time from selenium import webdriver from lxml import etree from selenium.webdriver import Act ...