51nod 1479 小Y的数论题
一脸不可做题~~~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
51nod 1479 小Y的数论题的更多相关文章
- 1479 小Y的数论题
小Y喜欢研究数论,并且喜欢提一些奇怪的问题.这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (xa+yb) Mod m=(z ...
- 51nod 1471 小S的兴趣 | 分块 链表
51nod 1471 小S的兴趣 题面 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题 ...
- C - 小Y上学记——认识新同学
C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- 【luogu P4007 清华集训2017】小Y和恐怖奴隶主
题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...
- 【luogu P4005 清华集训2017】小Y和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
- 【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)
[UOJ#340][清华集训2017]小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 UOJ 洛谷 题解 考虑如何暴力\(dp\). 设\(f[i][a][b][c]\)表示当前到了第\(i\) ...
- LOJ #6089. 小 Y 的背包计数问题
LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选 ...
- 【LOJ6089】小Y的背包计数问题(动态规划)
[LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要 ...
- 【LG4317】花神的数论题
[LG4317]花神的数论题 题面 洛谷 题解 设\(f_{i,up,tmp,d}\)表示当前在第\(i\)位,是否卡上界,有\(tmp\)个一,目标是几个一的方案数 最后将所有\(d\)固定,套数位 ...
随机推荐
- QQ 的一些URI 协议命令
//System.Diagnostics.Process.Start(@"C:\Program Files\Tencent\TIM\Bin\Timwp.exe", "te ...
- 2017-2018 Exp5 MSF基础应用 20155214
目录 Exp5 MSF基础应用 实验内容 渗透攻击 主要思路 知识点 Exp5 MSF基础应用 本次实验本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路. 主动攻击:m ...
- 20155223 Exp2 后门原理与实践
20155223 Exp2 后门原理与实践 实验预热 一.windows获取Linux shell Windows:使用 ipconfig 命令查看当前机器IP地址. 进入ncat所在文件地址,输入命 ...
- datatables.js 简单使用--弹出编辑框或添加数据框
内容:选中某一条记录,弹出编辑框 环境:asp.net mvc , bootstrap 显示效果: 代码: 至于怎么弄多选框,在上一篇博客里已经有说明. 主要用到了bootstrap的模态窗,下面代 ...
- Page结构
SQL Server存储数据的基本单元是Page,每一个Page的大小是8KB,数据文件是由Page构成的.在同一个数据库上,每一个Page都有一个唯一的资源标识,标识符由三部分组成:db_id,fi ...
- [Latex] 所有字体embedded: Type3 PDF文档处理 / True Type转换为Type 1
目录: [正文] Adobe Acrobat打印解决字体嵌入问题 [Appendix I] Type3转TRUE Type/Type 1 [Appendix II] TRUE Type转Type 1 ...
- OpenCV调整彩色图像的饱和度和亮度
问题 如何调整彩色图像的饱和度和亮度 解决思路 详细步骤: 将RGB图像值归一化到[0, 1] 然后使用函数cvtColor进行色彩空间的转换 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换 ...
- RyuBook1.0案例二:Traffic Monitor项目源码分析
Traffic Monitor源码分析 从simple_switch_13.SimpleSwitch13控制器继承并开发 class SimpleMonitor13(simple_switch_13. ...
- PTA (Advanced Level) 1001 A+B Format
1001 A+B Format Calculate a+b and output the sum in standard format -- that is, the digits must be s ...
- 1082. Read Number in Chinese (25)-字符串处理
题意就是给出9位以内的数字,按照汉子的读法读出来. 读法请看下方的几个例子: 5 0505 0505 伍亿零伍佰零伍万零伍佰零伍 5 5050 5050 伍亿伍仟零伍拾万伍仟零伍拾 (原本我以为这个 ...