一脸不可做题~~~233333

T<=100000,所以一定要logn出解啦。

但是完全没有头绪*&#……%*&……()……#¥*#@

题解:

因为2^p+2^p=2^(p+1)

发现这个式子和原式很像诶~~~

所以:2^(kab)+2^(kab)=2^(kab+1)

发现,只要选择合适的k,使得(kab+1)|c即可。

即:kab+1=lc

lc-kab=1

exgcd出解。

因为(a,b,c)=1所以一定有解。

然后快速幂整出来x,y,z,对m取余

但是,当m是2的整次幂的时候,可能出现的问题是,x/y/z为0

因为要选择(0,m)的数,所以0不行。

然后,因为m已经是2的整次幂,而且m>=3

所以,可以特殊考虑。

if a>1 x=m/2,y=1,z=1 (因为m/2的次幂一定mod m 为0)

else if b>1 x=1,y=m/2,z=1

else if c>1(此时a,b都是1啦) x=y=z=m/2 (两边都是0)

else (全是1) x=1,y=1,z=2

所以,综上讨论,不会出现无解的情况的。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,c,t;
ll m;
ll l,k;
ll x,y,z;
void exgcd(ll a0,ll b0,ll &x,ll &y){
if(b0==){
x=,y=;return;
}
exgcd(b0,a0%b0,y,x);
y-=(a0/b0)*x;
}
ll qm(ll x,ll y){
ll ret=;
while(y){
if(y&) ret=(ret*x)%m;
x=(x*x)%m;
y>>=;
}
return ret%m;
}
int main(){
scanf("%lld",&t);
while(t--){
scanf("%lld",&m);
scanf("%lld%lld%lld",&a,&b,&c);
l=,k=;
exgcd(c,a*b,l,k);
k=-k;
if(k<){
ll p=(-k)/c+;
k=k+c*p;
l=l+p*a*b;
}
else if(k>){
ll p=k/c;
k-=p*c;
l-=p*a*b;
}
x=qm(,k*b);
y=qm(,k*a);
z=qm(,l);
if(x==||y==||z==){
if(a>){
x=m/;
y=;z=;
}
else if(b>){
y=m/;
x=;z=;
}
else if(c>){
x=y=z=m/;
}
else {
x=,y=,z=;
}
}
printf("%lld %lld %lld\n",x,y,z);
}
}

总结:

这种题怎么想??

瞎搞好了。

怎么就能想到2^(kab)+2^(kab)=2^(kab+1)呢?鬼知道。

(xa+yb) Mod m=(zc) Mod m

最新文章

  1. MySQL server has gone away报错原因分析/
  2. 由于某IP大频率提交评论导致服务器宕机
  3. 关于WEB Service&amp;WCF&amp;WebApi实现身份验证之WCF篇(1)
  4. hdu 5894 hannnnah_j’s Biological Test 组合数学
  5. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  6. 解决黑苹果与windows时区不一致
  7. MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline (线段的 枚举)
  8. Android 自学之基本界面组件(上)
  9. PHP中长连接的实现
  10. mysql---整体备份和增量备份
  11. Java String 类的 equals 和 ==
  12. Java 年月日 日期加减
  13. C++笔记十七:C语言中 “冒牌货”const和const符号表
  14. Oracle常用sql命令
  15. python gevent自动挡的协程切换。
  16. android 面试准备基础题
  17. 在 Spring 4.3.9下升级 Velocity 1.7.x to Velocity 2.0.x 出现的问题
  18. It isn&#39;t possible to write into a document from an asynchronously-loaded
  19. [HDU6198]number number number
  20. 【Android】10.0 UI开发——如何编写程序界面、常见控件的使用

热门文章

  1. # 20155337《网络对抗》Exp6 信息搜集与漏洞扫描
  2. Android开发——官方推荐使用DialogFragment替换AlertDialog
  3. JavaEE笔记(十二)
  4. 原创zynq文章整理(MiZ702教程+例程)
  5. mfc 纯虚函数和抽象类
  6. Eclipse中Hadoop插件配置
  7. 牛客网NOIP赛前集训营-提高组(第八场)-B-推箱子[最短路优化建图]
  8. Java英文单词Java基础常见英语词汇
  9. 云容器云引擎:容器化微服务,Istio占C位出道
  10. LeetCode-3.无重复字符的最长字串