小Y喜欢研究数论,并且喜欢提一些奇怪的问题。
这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得
 (xa+yb) Mod m=(zc) Mod m 
Input
第一行一个数代表数据组数T
接下来T行每行四个整数m, a, b, c
满足a, b, c两两互质
1 <= T <= 100000
1 <= a, b, c <= 10^9
3 <= m <= 10^9
Output
对于每组数据,如果不存在x, y, z满足条件,则输出"Stupid xiaoy"(不含引号)
否则输出一行三个数分别为x, y, z
Input示例
1
100 1 1 1
Output示例
1 2 3

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

构造+扩展欧几里得~

可能有很多解,所以我们只需要构造一组。

2^a+2^a=2^(a+1),所以我们设x=2^(b*k),y=2^(a*k),这样z=2^(a*b*k+1),所以a*b*k+1=z*l,我们用扩展欧几里得解出k和l即可。

但要注意的是移项后k的系数为负,所以k=-k,这里如果直接把系数写成负的会挂。

同时k和l都必须>0,所以我们在解出答案后还要再处理一下。

另外当m是2的整数次幂时,答案可以直接写成1,m/2,1(b>1),m/2,1,1(a>1),m/2,m/2,m/2(c>1),1,1,2(a=b=c=1)。

如果T了的话,可能是没有开long long!

#include<cstdio>
#include<iostream>
using namespace std;
#define ll long longll t,m,a,b,c;ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0' || ch>'9') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0' && ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
}void gcd(ll a,ll b,ll &x,ll &y)
{if(!b){x=1;y=0;return;}gcd(b,a%b,x,y);ll z=y;y=x-a/b*y;x=z;
}ll mi(ll u,ll v)
{ll now=1;u%=m;for(;v;v>>=1,u=u*u%m) if(v&1) now=now*u%m;return now;
}int main()
{t=read();while(t--){m=read();a=read();b=read();c=read();int now=m;while(!(now%2)) now/=2;if(now==1){if(a>1) printf("%lld 1 1\n",m/2);else if(b>1) printf("1 %lld 1\n",m/2);else if(c>1) printf("%lld %lld %lld\n",m/2,m/2,m/2);else printf("1 1 2\n");}else{ll k,l;gcd(c,a*b,l,k);k=-k;while(k<0 || l<0) k+=c,l+=a*b;printf("%lld %lld %lld\n",mi(2,b*k),mi(2,a*k),mi(2,l));}       }return 0;
}

51nod 1479 小Y的数论题相关推荐

  1. 51nod 1479 小Y的数论题 (exgcd)

    1479 小Y的数论题 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 640 收藏 关注 小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及 ...

  2. 8.20模拟赛 [POI2009]WIE-Hexer [Lydsy1708月赛]跳伞求生 51nod 1479 小Y的数论题

    T1 发现 p p p很小,在最短路的基础上再加一维表示一个二进制数,代表当前拥有的剑的种类数,直接用SPFA" role="presentation" style=&q ...

  3. [51nod1479]小Y的数论题——构造+exgcd

    题目大意: 小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (xa+yb)Mo ...

  4. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛E题小Y吃苹果

    链接:https://www.nowcoder.com/acm/contest/91/E 题意: 小Y买了很多苹果,但他很贪吃,过了几天一下就吃剩一只了.每一天小Y会数出自己的苹果个数X,如果X是偶数 ...

  5. 【luogu P4005 清华集训2017】小Y和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  6. Loj #6089. 小 Y 的背包计数问题

    Loj #6089. 小 Y 的背包计数问题 Solution 似乎是比较套路的东西. 我们发现对于i≤ni\leq \sqrt ni≤n​的部分是一个多重背包,而剩下的部分是一个完全背包,因此考虑分 ...

  7. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...

  8. 小Y的轮回之路——攒机装机、B150装win7

    两个月前,陪伴我5年多的小Y(ideapad-y460N卡)突然大伤元气,硬盘跪了,显示屏也黑了一小块.本着经济实惠凑合用的态度换了个320G的硬盘,没想过几天显示屏情况加重,出现无数个红绿相间的线条 ...

  9. 【2020.10.31 洛谷团队赛 普及组】T2 U138180 神仙数论题

    题目背景 众所周知,ax≡b(modp)a^x≡b(modp)ax≡b(modp) 和 xa≡b(modp)x^a ≡b(modp)xa≡b(modp) 都可以在较为优秀的时间复杂度内求解. Quan ...

最新文章

  1. python输入函数后无法运行_python - 如何在函数运行期间忽略所有用户输入?_python_酷徒编程知识库...
  2. c 语言要记多少函数,学C语言要熟记那些基本语句?
  3. Python 基础语法(一)
  4. SonarQube6.2源码解析(三)
  5. 容器服务Windows Kubernetes使用阿里云日志服务来收集容器日志
  6. Python Socket(未编辑)
  7. 我的第一个项目(员工绩效管理系统 步骤超级详细---未完待更...)
  8. RH850F1x Starter Kit V3用户手册(中文翻译版)
  9. vue+element-ui的列表查询条件/筛选条件组件二次封装(Vue项目)——内置去除前后空格功能
  10. java中gc是什么_java什么是gc
  11. 强收红包漫天要价偷转黑车……滴滴网约车被指太任性
  12. eve网络模拟器使用wireshark抓包
  13. QPainter使用QImage做画布时花屏
  14. eNSP配置防火墙进入Web界面
  15. Tableau 十三、雷达图与凹凸图
  16. 三星5亿美元再建液晶模组厂 广深抛绣球
  17. Adobe欲统一相机RAW格式的格式——DNG数码负片
  18. 金山毒霸机智卸载法!!!
  19. [MySQL] MySQL 面试题集锦(1)
  20. svm实现图片分类(python)

热门文章

  1. 兄弟连教育python培训
  2. Stress命令Linux性能测试,压力测试工具(Centos演示)
  3. 形容词记忆(一):able, ible后缀常用词
  4. linux如何调试elf程序,开发一个Linux调试器就需要了解ELF和DWARF
  5. 加解密与HTTPS(1)
  6. JIL Widget应用开发必读
  7. 马化腾“互联网+中国”峰会演讲
  8. 基于 Flex+GoogleMap+PHP 的远程实时数据监测系统
  9. 奇门接口对接从ERP到WCS系统
  10. 喜马拉雅一喜一忧:盈利水平好转,营收减档降速,继续上市进程