洛谷P2485 [SDOI2011]计算器(exgcd+BSGS)
一题更比三题强
1操作直接裸的快速幂
2操作用exgcd求出最小正整数解
3操作用BSGS硬上
然后没有然后了
- //minamoto
- #include<cstdio>
- #include<map>
- #include<cmath>
- #include<iostream>
- #define ll long long
- using namespace std;
- #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
- char buf[<<],*p1=buf,*p2=buf;
- inline ll read(){
- #define num ch-'0'
- char ch;bool flag=;ll res;
- while(!isdigit(ch=getc()))
- (ch=='-')&&(flag=true);
- for(res=num;isdigit(ch=getc());res=res*+num);
- (flag)&&(res=-res);
- #undef num
- return res;
- }
- inline ll ksm(ll a,ll b,ll p){
- ll res=;
- while(b){
- if(b&) (res*=a)%=p;
- (a*=a)%=p,b>>=;
- }
- return res;
- }
- ll exgcd(ll a,ll b,ll &x,ll &y){
- if(!b){x=,y=;return a;}
- ll d=exgcd(b,a%b,x,y);
- ll t=x;x=y,y=t-y*(a/b);
- return d;
- }
- map<ll,ll> mp;
- ll BSGS(ll a,ll b,ll p){
- mp.clear();
- b%=p;int t=sqrt((double)p)+,tot=;
- for(int j=;j<t;++j){
- int val=b*tot%p;
- mp[val]=j,tot=tot*a%p;
- }
- if(!tot) return b==?:-;
- a=tot,tot=;
- for(int i=;i<=t;++i){
- int j=mp.find(tot)==mp.end()?-:mp[tot];
- if(j>=&&i*t-j>=) return i*t-j;
- tot=tot*a%p;
- }
- return -;
- }
- ll t,k,z,y,p;
- void solve1(){
- while(t--){
- y=read(),z=read(),p=read();
- printf("%lld\n",ksm(y,z,p));
- }
- }
- void solve2(){
- while(t--){
- y=read(),z=read(),p=read();
- ll x=,yy=,d=;
- d=exgcd(y,p,x,yy);
- if(z%d!=){puts("Orz, I cannot find x!");}
- else{
- ll tmp=abs(p/d);
- x=(((x*z)/d)%tmp+tmp)%tmp;
- printf("%lld\n",x);
- }
- }
- }
- void solve3(){
- while(t--){
- y=read(),z=read(),p=read();
- ll ans=BSGS(y,z,p);
- if(ans!=-) printf("%lld\n",ans);
- else puts("Orz, I cannot find x!");
- }
- }
- int main(){
- // freopen("testdata.in","r",stdin);
- t=read(),k=read();
- switch(k){
- case :solve1();break;
- case :solve2();break;
- case :solve3();break;
- }
- return ;
- }
洛谷P2485 [SDOI2011]计算器(exgcd+BSGS)的更多相关文章
- 洛谷 P2485 [SDOI2011]计算器 解题报告
P2485 [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最 ...
- 【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...
- BZOJ2242[SDOI2011]计算器——exgcd+BSGS
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...
- 【洛谷P2485】计算器
BSGS模板题 代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL fpow(LL a, ...
- P2485 [SDOI2011]计算器
P2485 [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最 ...
- BZOJ2242 [SDOI2011]计算器 【BSGS】
2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 4741 Solved: 1796 [Submit][Sta ...
- [洛谷P2491] [SDOI2011]消防
洛谷题目链接:[SDOI2011]消防 题目描述 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超 ...
- BZOJ2243 洛谷2486 [SDOI2011]染色 树链剖分
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2243 题目传送门 - 洛谷2486 题意概括 一棵树,共n个节点. 让你支持以下两种操作,共m次操 ...
- 洛谷 P2495 [SDOI2011]消耗战(虚树,dp)
题面 洛谷 题解 虚树+dp 关于虚树 了解一下 具体实现 inline void insert(int x) { if (top == 1) {s[++top] = x; return ;} int ...
随机推荐
- ASP.NET MVC 页面使用富文本控件的XSS漏洞问题
目前在做的项目存在XSS安全漏洞! 原因是有一些页面使用了富文本编辑框,为了使得其内容可以提交,为相关action设置了[ValidateInput(false)] 特性: [HttpPost] [V ...
- 哈希表的java实现
一.为什么要用哈希表 树的操作通常需要O(N)的时间级,而哈希表中无论存有多少数据,它的插入和查找(有时包括删除)只需要接近常量级的时间,即O(1)的时间级. 但是哈希表也有一定的缺点:它是基于数组的 ...
- arm处理器的历史及现状
1 arm处理器的发展历史 arm1 arm2 arm3 arm6 arm7 arm9 arm11 arm cortex 2 arm处理器现状 arm cortex A a即application,即 ...
- java之快速排序
//基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据 ...
- LVS项目介绍
LVS项目介绍 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 3 月 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Serve ...
- go 包的问题
同一个包下的所有方法,都整合到一个里面去了,通过包名可以任意调用包下的方法. 文件夹的名字必须要和文件里面的package的名字一样,否则会报错... 导文件就是文件所在的包 导包import(),是 ...
- apache配置文件详解及虚拟主机的搭建
1.404跳转: <IfModule dir_module> DirectoryIndex index.php index.html /error.php</IfModule& ...
- 重新记录 ansible操作hadoop用户的问题
前提是安装ansible 配置源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...
- MAC 安装phantomjs
step1:下载压缩包http://phantomjs.org/ step2:解压缩,我是解压缩到/Users/gxy/software step3:写入配置路径,vi ~/.bash_profile ...
- vue 表单验证省市县三联动
<el-col :span="24"> <el-form-item label="所在地区" prop="region" ...