题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2242

第一道BSGS!

咳咳,我到底改了些什么?……

感觉和自己的第一版写的差不多……可能是long long还有%C的位置的缘故?

不过挺欣赏这个板子的。把它记下来好了。

其讲解:https://blog.csdn.net/clove_unique/article/details/50740412

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#define ll long long
using namespace std;
ll T,type,A,B,C,x,y;
map<ll,ll> mp;
ll pw(ll x,ll k,ll mod)
{
ll ret=;while(k){if(k&)ret=ret*x%mod;x=x*x%mod;k>>=;}return ret;
}
void exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){x=;y=;return;}
exgcd(b,a%b,y,x);y-=a/b*x;
}
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll solve3()
{
A%=C;B%=C;
if(!A)
{
if(!B)return ;else return -;
}
mp.clear();ll m=ceil(sqrt(C)),t;
for(ll i=;i<=m;i++)
{
if(!i){t=B%C;mp[t]=i;continue;}
t=t*A%C;mp[t]=i;// if cover the previous one,it's correct
}
t=pw(A,m,C);ll ans=t;
for(ll i=;i<=m;i++)
{
if(mp[ans])return (i*m%C-mp[ans]%C+C)%C;//%C的位置
ans=ans*t%C;
}
return -;
}
int main()
{
scanf("%lld%lld",&T,&type);
while(T--)
{
scanf("%lld%lld%lld",&A,&B,&C);
if(type==)
{
B%=(C-);
printf("%lld\n",pw(A,B,C));
}
if(type==)
{
ll g=gcd(A,C);//ll g
if(B%g){printf("Orz, I cannot find x!\n");continue;}
A/=g;C/=g;B/=g;
exgcd(A,C,x,y);
printf("%lld\n",(x*B%C+C)%C);//多%一个C
}
if(type==)
{
ll ans=solve3();
if(ans==-)printf("Orz, I cannot find x!\n");
else printf("%lld\n",ans);
}
}
return ;
}

最新文章

  1. ASP.NET 5 使用 TestServer 进行单元测试
  2. Unity学习疑问记录之Awake和Update
  3. 7.dotnet core 如何发邮件
  4. ViewFlipper(翻转视图)的使用
  5. MYSQL 5.6中禁用INNODB引擎
  6. linux进程监控,monitor脚本
  7. js获取字符串的字节长度
  8. 独立硬盘冗余阵列与HDFS
  9. 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
  10. cocos2d-x V3.0 呼叫加速度计 Acceleration
  11. vultr和digitalocean vps使用感受
  12. SD卡读写扇区注意事项(转)
  13. 从零开始构建一个的asp.net Core 项目(二)
  14. mybatis插入实体到数据库后获取自增的主键
  15. 机器学习三剑客之Pandas中DataFrame基本操作
  16. Prism框架研究(二)
  17. 第七次Scrum meeting
  18. 【视频】dx dy的意思 微分的定义 导数符号的意思
  19. SpringMVC学习八 @ResponseBody注解
  20. python的动态性和_slot_

热门文章

  1. qt_hal_verion
  2. 【Head First Servlets and JSP】笔记7:如何创建一个全局的dog?
  3. 三 ip dns等配置
  4. 让iOS项目允许使用http协议请求
  5. IDEA中集成JRebel插件
  6. 算法总结之 将单链表的每K个节点之间逆序
  7. JavaScript -- 练习 window 流氓广告
  8. stacktach和ceilometer
  9. JProgressBar与Timer的配套使用
  10. 基于CSS3金属风格下拉菜单