$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. bootstrap table--面相配置、hook、适配的表格框架

    bootstrap table--面相配置.hook.适配的表格框架

  2. golang 源码文件

    Go源码文件分三个种类: 1)命令源码文件:如果一个源码文件被声明属于main代码包,且该文件代码中包含无参数声明和结果声明的main函数,则它就是命令源码文件.命令源码文件可以通过go run命令直 ...

  3. ML学习笔记之XGBoost实现对鸢尾花数据集分类预测

    import xgboost as xgb import numpy as np import pandas as pd from sklearn.model_selection import tra ...

  4. SpringBoot中使用@scheduled定时执行任务需要注意的坑

    spring boot: 计划任务@ EnableScheduling和@Scheduled @Scheduled中的参数说明 @Scheduled(fixedRate=2000):上一次开始执行时间 ...

  5. SpringBoot引入第三方jar包或本地jar包的处理方式

    在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 第一种是将本地jar包安装在本地maven库 第二种是将本地ja ...

  6. 类例程_java战斗程序

    代码如下: package t11; import java.util.Random; public class Fight { String name; int life, attack, spee ...

  7. C#实现电信短信SMGP协议程序源码

    此程序为中国电信SMGP协议程序接口,适合在中国电信申请了短信发送端口的公司使用. 短信群发已经成为现在软件系统.网络营销等必不可少的应用工具.可应用在短信验证.信息群发.游戏虚拟商品购买.事件提醒. ...

  8. Netty高性能原理和框架架构解析

    1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件 ...

  9. MFC中动态添加控件----寻找多年的秘籍,吐血推荐

    原文作者tianwaik 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立 ...

  10. 【转载】 C#中ArrayList使用GetRange方法获取某一段集合数据

    在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,可以使用GetRange方法来获取集合中指定索引位置开始的一整段集合数据组成一个新的集合,GetRange方法的签名为virtual ...