三合一的题目。

exgcd不解释,快速幂不解释。

BSGS采用了一种不用写EXGCD的方法,写起来感觉好了很多。

比较坑,没给BSGS的样例(LAJI)

#include <map>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define F(i,j,k) for (ll i=j;i<=k;++i)
#define D(i,j,k) for (ll i=j;i>=k;--i)
#define ll long long map <ll,ll> mp; ll t,k; ll qpow(ll a,ll b,ll p)
{
ll ret=1;
while (b)
{
if (b&1) ret=(ll)ret*a%p;
a=(ll)a*a%p;
b>>=1;
}
return ret;
} void solve1()
{
F(i,1,t)
{
ll a,b,p;
scanf("%lld%lld%lld",&a,&b,&p);
printf("%lld\n",qpow(a,b,p));
}
} void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if (b==0) {x=1;y=0;d=a;return;}
exgcd(b,a%b,d,y,x);
y-=x*(a/b);
} void solve2()
{
F(i,1,t)
{
ll a,b,p,x,y,z,d;
scanf("%lld%lld%lld",&a,&b,&p);b%=p;
exgcd(a,p,d,x,y);
if (b%d)
{
printf("Orz, I cannot find x!\n");
continue;
}
x=x*(b/d);
if (x>=0) x=x%p;
else x=(0-x)/p*p+x;
while (x<0) x+=p;
printf("%lld\n",x);
}
} void solve3()
{
F(i,1,t)
{
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
mp.clear();
if (a%c==0) {printf("Orz, I cannot find x!\n");continue;}
ll p=false;
ll m=ceil(sqrt(c)),ans;
for (ll i=0;i<=m;++i)
{
if (i==0)
{
ans=b%c;mp[ans]=i;continue;
}
ans=((ll)ans*a)%c;
mp[ans]=i;
}
ll tmp=qpow(a,m,c); ans=1;
for (ll i=1;i<=m;++i)
{
ans=((ll)ans*tmp)%c;
if (mp[ans])
{
ll tmp=i*m-mp[ans];
printf("%lld\n",(tmp%c+c)%c);
p=true;
break;
}
}
if (!p) printf("Orz, I cannot find x!\n");
}
} int main()
{
scanf("%lld%lld",&t,&k);
switch(k)
{
case 1: solve1(); break;
case 2: solve2(); break;
case 3: solve3(); break;
}
}

  

最新文章

  1. HttpUtil
  2. JAVA基础中的注意点(二)
  3. [PHP] - Laravel - Route路由
  4. 阅读笔记 The Impact of Imbalanced Training Data for Convolutional Neural Networks [DegreeProject2015] 数据分析型
  5. typedef block
  6. java dom4j解析xml用到的几个方法
  7. 算法之合并排序(mergeSort)
  8. 397. Integer Replacement
  9. css float父元素高度塌陷
  10. stm32通用定时器中断问题
  11. UVA LA 7146 2014上海亚洲赛(贪心)
  12. Android学习笔记-Button(按钮)
  13. dede 你所上传的软件类型不在许可列表,请更改系统对扩展名限定的配置
  14. 企业级分布式存储应用与实战-mogilefs实现
  15. 【Unity与23种设计模式】观察者模式(Observer)
  16. cf351B Jeff and Furik (树状数组)
  17. python模块之logging模块
  18. XSY contest1586 proB
  19. Dota 2 中安装包的作用
  20. BugFree设置邮箱通知(这里以163邮箱为例)

热门文章

  1. 使用Android-Debug-Database 在浏览器中查看App的数据库
  2. vs2010调试sql2008存储过程
  3. hihoCoder #1068 : RMQ-ST算法(模板)
  4. codevs 1146 ISBN号码
  5. O2O的十八个细分市场,运营模式如何?
  6. UVA - 11082 Matrix Decompressing (最大流,技巧)
  7. 第009课 gcc和arm-linux-gcc和MakeFile
  8. Node.js连接mysql报加密方式错误解决方案
  9. AC自动机讲解+[HDU2222]:Keywords Search(AC自动机)
  10. null 理解