洛谷P2485 [SDOI2011]计算器
时间:2020-03-05
本文章向大家介绍洛谷P2485 [SDOI2011]计算器,主要包括洛谷P2485 [SDOI2011]计算器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
待补锅...
#include <map>
#include <cmath>
#include <cstdio>
#include <algorithm>
#define LL long long
#define gc() getchar()
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
using namespace std;
const int N = 1e8 + 5;
LL t, x, y, z, k, gg;
LL X1, Y1;
map <LL, LL> c;
inline int read() {
char ch = gc();
int ans = 0;
while (ch > '9' || ch < '0') ch = gc();
while (ch >= '0' && ch <= '9') ans = (ans << 1) + (ans << 3) + ch - '0', ch = gc();
return ans;
}
inline LL quick_pow(LL a, LL b, LL p) {
LL base = a, ans = 1;
while (b) {
if (b & 1) ans = (ans * base) % p;
base = (base * base) % p;
b >>= 1;
}
return ans;
}
inline void exgcd(int a, int b) {
if (!b) { gg = a; X1 = 1, Y1 = 0; return; }
exgcd(b, a % b);
int temp = X1;
X1 = Y1, Y1 = temp - a / b * Y1;
}
int main() {
t = read(), k = read();
if (k == 1) {
while(t--) {
int p;
y = read(), z = read(), p = read();
printf("%lld\n", quick_pow(y, z, p));
}
}
else if (k == 2) {
while (t--) {
int p;
y = read(), z = read(), p = read();
exgcd(y, p);
if (z % gg) { printf("Orz, I cannot find x!\n"); continue; }
X1 = X1 * (z / gg);
if (X1 > 0 && X1 % p) X1 = X1 - (X1 / p) * p;
else if (X1 < 0) {
if ((0 - X1) % p) X1 = X1 + ((0 - X1) / p + 1) * p;
else X1 = 0;
}
printf("%lld\n", X1);
}
}
else {
while (t--) {
int p;
y = read(), z = read(), p = read();
if (z && y % p == 0) { printf("Orz, I cannot find x!\n"); continue; }
x = ceil(sqrt(p));
c.clear();
LL cur = z % p, po = quick_pow(y, x, p);
c[cur] = 0;
rep(i, 1, x) cur = (cur * y) % p, c[cur] = i;
cur = 1;
int vis = 1;
rep(i, 1, x) {
cur = (cur * po) % p;
if (c[cur]) { X1 = (i * x - c[cur]) % p; printf("%lld\n", (X1 + p) % p); vis = 0; break; }
}
if (vis) printf("Orz, I cannot find x!\n");
}
}
return 0;
}
原文地址:https://www.cnblogs.com/Miraclys/p/12422938.html
- Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)
- 模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
- 洛谷P1311 选择客栈
- 洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle
- R语言抓包实战——知乎live二级页面获取
- 左手用R右手Python系列——面向对象编程基础
- 线性同余同余方程组解法(excrt)
- #19. 计数(容斥原理)
- 左手用R右手Python系列——多进程/线程数据抓取与网页请求
- #15. 钻石
- P1328 生活大爆炸版石头剪刀布
- ASP.NET MVC 5 Authentication Breakdown
- jquery easyui datagrid mvc server端分页排序筛选的实现
- 左手用R右手Python系列——使用多进程进行任务处理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法