【SDOI 2010】 计算器
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=2242
【算法】
第一问用快速幂解决
第二问用exgcd解决
第三问用BSGS算法解决
【代码】
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll T,K,y,z,p,q,x,g,ans; inline ll power(ll a,ll n,ll p)
{
ll b = a,ret = ;
while (n > )
{
if (n & ) ret = 1ll * ret * b % p;
b = 1ll * b * b % p;
n >>= ;
}
return ret;
}
inline ll exgcd(ll a,ll b,ll &x,ll &y)
{
ll g;
if (b == )
{
x = ;
y = ;
return a;
} else
{
g = exgcd(b,a%b,y,x);
y -= a / b * x;
return g;
}
}
inline ll Baby_Step_Giant_Step(ll a,ll b,ll p)
{
ll i,j,t,val;
map<ll,ll> mp;
mp.clear();
b %= p;
t = ceil(sqrt(p));
for (j = ; j <= t; j++)
{
val = 1ll * b * power(a,j,p) % p;
mp[val] = j;
}
a = power(a,t,p);
if (a == ) return b == ? : -;
for (i = ; i <= t; i++)
{
val = power(a,i,p);
j = mp.find(val) == mp.end() ? - : mp[val];
if (j >= && i * t - j >= )
return i * t - j;
}
return -;
} int main()
{ scanf("%lld%lld",&T,&K);
while (T--)
{
scanf("%lld%lld%lld",&y,&z,&p);
if (K == ) printf("%lld\n",power(y,z,p));
if (K == )
{
g = exgcd(y,p,x,q);
if (z % g == ) printf("%lld\n",((x*z/g)%p+p)%p);
else printf("Orz, I cannot find x!\n");
}
if (K == )
{
ans = Baby_Step_Giant_Step(y,z,p);
if (ans != -) printf("%lld\n",ans);
else printf("Orz, I cannot find x!\n");
}
} return ; }
【SDOI 2010】 计算器的更多相关文章
- [SDOI 2011]计算器
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- [BZOJ 2242] [SDOI 2011] 计算器
Description 你被要求设计一个计算器完成以下三项任务: 给定 \(y,z,p\),计算 \(y^z \bmod p\) 的值: 给定 \(y,z,p\),计算满足 \(xy≡ z \pmod ...
- SDOI 2010 and SXOI 2014 地精部落 (递推)
用E[i,j]表示共有i个数字,以1..j开头且一开始下降的方案数的总和.则我们有: E[i,j]:=E[I,J-1]+E[i-1,i-j] 我们先来证明上升与下降的方案是一一对应的. 事实上,若有a ...
- 【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- [SDOI 2010]外星千足虫
Description 题库链接 给出 \(m\) 个 \(n\) 元的 \(0,1\) 方程,即系数非 \(0\) 即 \(1\) ,方程的结果为奇偶性. \(1\leq n\leq 1000,1\ ...
- [SDOI 2010]魔法猪学院
Description 题库链接 给出一张 \(n\) 个点 \(m\) 条边有向图,询问最多有多少条不同的路径从 \(1\) 到 \(n\) 并且路径长度和 \(\leq E\) . \(2\leq ...
- 洛谷P2468 SDOI 2010 粟粟的书架
题意:给你一个矩形书架,每个点是这本书的页数,每次询问(x1,y1)(x2,y2)这个小矩形里最少需要取几本书使得页数和等于Hi. 题解:小数据二位前缀和预处理+二分答案,大数据一行所以用主席树做,感 ...
- 解题:SDOI 2010 魔法猪学院
题面 题外话:神**可持久化左偏树,你谷的人都太神了,学不来 我把这个当做A*模板题的说,先讲一讲个人对A*的理解:如果说普通的BFS是Bellman_Ford,那A*就是一个Dijkstra.以寻找 ...
- 「BZOJ 1924」「SDOI 2010」所驼门王的宝藏「Tarjan」
题意 一个\(r\times c\)的棋盘,棋盘上有\(n\)个标记点,每个点有三种类型,类型\(1\)可以传送到本行任意标记点,类型\(2\)可以传送到本列任意标记点,类型\(3\)可以传送到周围八 ...
随机推荐
- IN、EXISTS的相关子查询用INNER JOIN 代替--性能优化
如果保证子查询没有重复 ,IN.EXISTS的相关子查询可以用INNER JOIN 代替.比如: IN.EXISTS的相关子查询用INNER JOIN 代替--sql2000性能优化
- ★Java语法(二)——————————数据类型常见问题
1.用float型定义变量:float a = 3.14 :是否正确? 不正确.“=” 两边的精度类型不匹配,应为:float a =(float)3.14 或 float a =3.14F 或 ...
- Centos6.6 安装Subversion服务
一.介绍 Subversion 简称就是svn服务器,用来托管代码的,类似的还有git 1)Centos6.6 2)Subversion 二.安装 yum -y install subversion ...
- 【剑指Offer】51、构建乘积数组
题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]. 其中B中的元素B[i]=A[0] * A[1]... * A[i-1] * A[i+1] ...
- Noip 2013 练习
转圈游戏 传送门 Solution 快速幂 Code //By Menteur_Hxy #include <cstdio> #include <cstdlib> #includ ...
- GreenPlum 集群常用命令
GreenPlum 常用命令 gpstate 命令 参数 作用 gpstate -b => 显示简要状态 gpstate -c => 显示主镜像映射 gpstart -d => 指定 ...
- Vue主要原理最简实现与逻辑梳理
Vue的主要原理中主要用到了定义的这么几个函数Dep,Watcher,observer.我们来使用这几个函数简单的实现一下vue构造函数数据绑定和相互依赖部分,梳理一下它们之间的关系.省略了编译部分和 ...
- BALNUM - Balanced Numbers
BALNUM - Balanced Numbers Time limit:123 ms Memory limit:1572864 kB Balanced numbers have been used ...
- 洛谷 P3178 BZOJ 4034 [HAOI2015]树上操作
题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 ...
- 0804关于mysql 索引自动优化机制: 索引选择性(Cardinality:索引基数)
转自http://blog.csdn.net/zheng0518/article/details/50561761 1.两个同样结构的语句一个没有用到索引的问题: 查1到20号的就不用索引,查1到5号 ...