[原博客] BZOJ 2242 [SDOI2011] 计算器
noip级数论模版题了吧。
让求三个东西:
- 给定y,z,p,计算`Y^Z Mod P` 的值。
- 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数。
- 给定y,z,p,计算满足`Y^x ≡ Z ( mod P)`的最小非负整数。
其中P均为素数。
来分着处理。
1 `y^z%p` 快速幂。
推荐一种又快又好写的写法。
LL power_mod(LL a,LL b,LL p){ //get a^b%p
LL ret=;
while(b){
) ret = ret * a % p;
a = a * a % p;
b>>=;
}
return ret;
}
为什么是对的呢,拆成二进制看一看就好了。
2 Yx==Z%p 扩展欧几里德。
Yx==Z%p可以变形成为Yx+py==Z
显然仅当gcd(Y,p)|Z时有解。
我们知道ex_gcd可以求ax0+by0==gcd(a,b)的一组解。
所以我们让原方程两边都除以gcd(Y,p),然后得到Yx0+py0==gcd(Y,p)的一组解。
于是Z/gcd(Y,p)*x0%p为原题的答案。注意要让结果为正。
3 Y^x %p ≡ Z Baby step-giant step
其实也是一种分块的思想。
设 m=√p。
可以表示为 Y^(km) * Y^r == Z (mod P)。
注意到0<=r<m 只有√p种取值,所以我们可以预处理出来,算出它的逆元再乘Z,扔进一个set。
然后枚举k,set中查询Y^(km),如果有这个值,就说明找到了解。
逆元的话。因为p是素数,所以直接power_mod(Y,p-2,p);就好了。
从原博客搬运过来。
[原博客] BZOJ 2242 [SDOI2011] 计算器的更多相关文章
- bzoj 2242: [SDOI2011]计算器 BSGS+快速幂+扩展欧几里德
2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 你被 ...
- BZOJ 2242: [SDOI2011]计算器( 快速幂 + 扩展欧几里德 + BSGS )
没什么好说的... --------------------------------------------------------------------- #include<cstdio&g ...
- BZOJ 2242: [SDOI2011]计算器 [快速幂 BSGS]
2242: [SDOI2011]计算器 题意:求\(a^b \mod p,\ ax \equiv b \mod p,\ a^x \equiv b \mod p\),p是质数 这种裸题我竟然WA了好多次 ...
- [原博客] BZOJ 2725 : [Violet 6]故乡的梦
这个题在bzoj上好像是个权限题,想做的可以去Vani的博客下载测试数据.这里有题面. 简单叙述一下题意:给你一个n个点.m条边的带权无向图,S点和T点,询问Q次删一条给定的边的S-T最短路. 其中 ...
- bzoj 2242 [SDOI2011]计算器(数论知识)
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- BZOJ.2242.[SDOI2011]计算器(扩展欧几里得 BSGS)
同余方程都不会写了..还一直爆int /* 2.关于同余方程ax ≡b(mod p),可以用Exgcd做,但注意到p为质数,y一定有逆元 首先a%p=0时 仅当b=0时有解:然后有x ≡b*a^-1( ...
- BZOJ 2242 [SDOI2011]计算器(快速幂+Exgcd+BSGS)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2242 [题目大意] 给出T和K 对于K=1,计算 Y^Z Mod P 的值 对于K=2 ...
- bzoj 2242 [SDOI2011]计算器——BSGS模板
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2242 第一道BSGS! 咳咳,我到底改了些什么?…… 感觉和自己的第一版写的差不多……可能是 ...
- BZOJ 2242 [SDOI2011]计算器 BSGS+高速幂+EXGCD
题意:id=2242">链接 方法: BSGS+高速幂+EXGCD 解析: BSGS- 题解同上.. 代码: #include <cmath> #include <c ...
随机推荐
- Java基础知识强化之IO流笔记54:IO流练习之 LineNumberReader的特有的功能使用
1. LineNumberReader的特有的功能: BufferedReader |--LineNumberReader public int getLineNumber():获得当前行号. ...
- r2d_01
- Android开发--UI之Bundle的使用
Android开发–UI之Bundle的使用 最近,把之前学过的东西大体的整理了以下,并且想把学过的心得分享给大家.我自己做了一个小小的demo,以便说明具体的应用. 这里的两个界面是通过第一个界面输 ...
- 将分页功能从JSP页面中独立出来
附带视频链接:http://www.tudou.com/programs/view/leaQ-YFl7W8/?bid=03&pid=2&resourceId=0_03_05_02
- UIView转场动画属性设置
常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动. UIViewAnimationOptionAllo ...
- UIView的常见属性
UIView的常见属性: @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDyn ...
- iOS .pch文件的使用
什么是.pch文件预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只 ...
- swift之元组类型
一.元组类型是有N个任意类型的数据组成(N>=0),组成元组类型的数据可以称为“元素” 二.元组的定义 如:let position = (x:10.5,y:20) //两个元素的元组 l ...
- Emgu CV的一个异常的解决方法
今年组里有大项目落我头上了,并不能像去年一样回家还能搞搞Cocos2dX,一把老泪流了下来... 回到正题,由于组里需要做一个显示板的自动测试项目,涉及到Computer Vision.不得不说,这才 ...
- WPF ItemsControl 控件支持鼠标滚轮滑动
此文章意在解决在WPF中ItemsControl类型的集合控件支持鼠标滚轮操作,并可控制滚动的速度. 第一步:给ItemsControl添加滚轮事件. this.listBox.AddHandler( ...