AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2242

【吐槽】

三合一的一道模板题。快速幂+扩展gcd+离散对数

学过这三个的人应该都会吧,不会的。。。传送门:http://www.cnblogs.com/chty/p/6022641.html

写的时候手贱把哈希表写错了,调了半天。。。

贴个丑陋的代码:

/*************bzoj 2242by chty2016.11.9
*************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
#define FILE "read"
#define MAXN 99991
typedef long long ll;
struct node{ll v,f,num;}hash[MAXN+10];
ll a,b,mod;
inline ll read()
{ll x=0,f=1;  char ch=getchar();while(!isdigit(ch))  {if(ch=='-')  f=-1;  ch=getchar();}while(isdigit(ch))  {x=x*10+ch-'0';  ch=getchar();}return x*f;
}
void insert(ll v,ll x)
{ll temp=v%MAXN;while(hash[temp].f&&hash[temp].v!=v) {temp++; if(temp>MAXN) temp-=MAXN;}if(!hash[temp].f) hash[temp].f=1,hash[temp].v=v,hash[temp].num=x;
}
ll find(ll v)
{ll temp=v%MAXN;while(hash[temp].f&&hash[temp].v!=v) {temp++; if(temp>MAXN) temp-=MAXN;}if(!hash[temp].f)  return -1;else return hash[temp].num;
}
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);}
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(!b) {x=1; y=0; return a;}ll g=exgcd(b,a%b,x,y);ll t=x;x=y;y=t-a/b*y;return g;
}
void solve1(){ll sum=1;for(;b;b>>=1,a=a*a%mod)if(b&1)sum=sum*a%mod;printf("%d\n",sum);}
void solve2()
{ll x,y,d=exgcd(a,mod,x,y);if(b%d)  {printf("Orz, I cannot find x!\n");return;}ll t=mod/d;while(x<0)  x+=t;while(x>=t) x-=t;printf("%lld\n",x*b%mod);
}
void solve3()
{if(mod==1)  {puts("0"); return;}a%=mod;b%=mod;ll ret(1);for(ll i=0;i<=50;i++) {if(ret==b) {printf("%lld\n",i); return; ret=ret*a%mod;}}ll temp,ans(1),cnt(0);while((temp=gcd(a,mod))!=1){if(b%temp)  {printf("Orz, I cannot find x!\n");return;}mod/=temp;  b/=temp;ans=ans*(a/temp)%mod;cnt++;}ll m=(ll)sqrt(mod*1.0),t(1);for(ll i=0;i<m;i++)  {insert(t,i);t=t*a%mod;}for(ll i=0;i<m;i++){ll x,y;exgcd(ans,mod,x,y);ll val=x*b%mod;val=(val+mod)%mod;ll j=find(val);if(j!=-1)  {printf("%lld\n",i*m+j+cnt);return;}ans=ans*t%mod;}printf("Orz, I cannot find x!\n");return;
}
void pre() {for(ll i=0;i<=MAXN;i++)hash[i].f=0,hash[i].num=hash[i].v=-1;}
int main()
{freopen(FILE".in","r",stdin);freopen(FILE".out","w",stdout);ll T=read(),flag=read();while(T--){pre();a=read();  b=read();  mod=read();switch(flag){case 1:solve1();break;case 2:solve2();break;case 3:solve3();break;}}return 0;
}

【bzoj2242】计算器 离散对数相关推荐

  1. NOI数学之提高级:初等数论

    欧拉定理详解 欧拉定理详解_郝伟老师的博客--大数据.并行计算与人工智能时代-CSDN博客_欧拉定理 欧拉函数与欧拉定理 欧拉函数与欧拉定理_leader_one的博客-CSDN博客_欧拉定理 欧拉定 ...

  2. [bzoj2242] [SDOI2011]计算器

    #570. [bzoj2242] [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ ...

  3. 【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS

    题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...

  4. [bzoj2242][SDOI2011]计算器

    题目大意:三合一,给你$y,z,p$,求$x$,三种询问 $y^z\bmod{p}$ $xy\equiv z\pmod p$的最小非负整数 $y^z\equiv z\pmod p$的最小非负整数 题解 ...

  5. 【codevs1565】【BZOJ2242】计算器,数论练习

    计算器 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算 ...

  6. bzoj2242 [SDOI2011]计算器 exgcd+ksm+bsgs

    三个板子,注意bsgs的时候要特判无解,即a%p==0||b%p==0(bsgs还是很巧妙的..) 码: #include<iostream> #include<cstdio> ...

  7. BZOJ 2242([SDOI2011]计算器-Baby Step Giant Step第1题)

    2242: [SDOI2011]计算器 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 744  Solved: 289 [Submit][Statu ...

  8. 离散对数和椭圆曲线加密原理

    为什么是椭圆曲线加密? 椭圆曲线加密(以下简称ECC)实际上已经应用到了各个网站的HTTPS连接中.你平常访问的网站,大部分都是基于椭圆曲线加密,比如你现在正在浏览的CSDN.如果你用的是chrome ...

  9. 【算法竞赛学习笔记】离散对数与BSGS-数学提升计划

    title : 离散对数与BSGS date : 2021-8-12 tags : ACM,数论 author Linno 阶 对与m互质的整数a,我们记满足an≡1modma^n\equiv 1\m ...

  10. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

最新文章

  1. VScode配置CMAKE文件
  2. hive执行流程(3)-Driver类分析1Driver类整体流程
  3. linux高编线程-------线程的创建,终止
  4. linux端口映射_Linux 系统安全与优化配置
  5. 社团管理系统用c语言1000,图书馆管理系统C语言啊1000行啊,哪位老哥有啊??...
  6. opencv-api minEnclosingCircle
  7. GhostNet 解读及代码实验(附代码、超参、日志和预训练模型)
  8. java 异步i o_在Java中播放框架异步处理和阻塞I / O
  9. 苹果系统上安装linux系统,Mac OS X下制作安装Linux系统的USB启动盘
  10. 顶级SaaS公司的共同基因都有什么?
  11. 频繁分配释放内存导致的性能问题的分析
  12. 鼠标自动移动 防止锁屏睡眠
  13. voc2007,voc2012数据集快速下载方法
  14. simulink模型动静态测试
  15. 表格如何把边框线条加粗
  16. scrapy爬取实习僧全站
  17. 网易称暴雪离婚不离身;苹果发布 M2 Pro 和 M2 Max 芯片;滴滴出行 App 已重新上架安卓应用商店 | 极客头条...
  18. 国内专业垂直搜索引擎汇总
  19. 美国大学硕士研究生计算机专业几年,美国大学博士几年 - 美国南加州大学计算机研究生学几年...
  20. 反编译任何微信小程序,以及独立分包、插件的处理方式

热门文章

  1. 目标检测数据集下载及算法训练教程
  2. 2003年高考语文全国最高分_2003年参加高考的同学们?你们考了多少分啊?再议2003年高考数学...
  3. 沉默的潜意识音频Creator软件
  4. 10046追踪文件里的tim---clock walk formula(reading Cary Millsap)
  5. 针对浏览器主页被360或hao123锁定的解决方法
  6. 万用表蜂鸣器档の响一声
  7. vfp access mysql具体_详细介绍Visual FoxPro数据表的索引
  8. Node实现支付宝网页支付流程(沙箱环境)
  9. 如何细分目标客户群体,让邮件效果更好?
  10. AI玩游戏系列,机器学习玩游戏(1) 一维游戏