jzoj. 3526. 【NOIP2013模拟11.7A组】不等式(solve)
来源:互联网 发布:绍兴网络电视台 跃马 编辑:程序博客网 时间:2024/06/05 01:57
Description
小z热衷于数学。
今天数学课的内容是解不等式:L<=S*x<=R。小z心想这也太简单了,不禁陷入了深深的思考:假如已知L、R、S、M,满足L<=(S*x)mod M<=R的最小正整数x该怎么求呢?
Input
第一行包含一个整数T,表示数据组数,接下来是T行,每行为四个正整数M、S、L、R。
Output
对于每组数据,输出满足要求的x值,若不存在,输出-1。
Sample Input
1
5 4 2 3
Sample Output
2
Data Constraint
30%的数据中保证有解并且答案小于等于10^6;
另外20%的数据中保证L=R;
100%的数据中T<=100,M、S、L、R<=10^9。
分析:
类似于辗转相除法。
l<=sx mod m<=r
–> l<=sx-my<=r
–> -r<=my mod s<=-l
若求出的x满足条件就输出x,
否则求出y,再计算x,
要算出y,就要继续dg下去。
特判:若l=0 or s=0 or l>r or l>=m那么无解。
若一开始r>m,那么r=m-1。
代码:
var t,m,s,l,r:int64; i:longint;function exgcd(m,s,l,r:int64):int64; var x,y,z:int64;begin if l=0 then exit(0); if l>=m then exit(-1); if l>r then exit(-1); if s mod m=0 then exit(-1); s:=s mod m; z:=(l-1) div s+1; if z*s<=r then exit(z); x:=exgcd(s,m,(-r mod s+s) mod s,(-l mod s+s) mod s); if x=-1 then exit(-1); y:=(r+m*x) div s; if s*y-m*x>=l then exit((y mod m+m) mod m) else exit(-1);end;begin assign(input,'solve.in'); assign(output,'solve.out'); reset(input); rewrite(output); readln(t); for i:=1 to t do begin readln(m,s,l,r); if r>=m then r:=m-1; writeln(exgcd(m,s,l,r)); end; close(input); close(output); end.
阅读全文
0 0
- JZOJ 3526. 【NOIP2013模拟11.7A组】不等式(solve)
- jzoj. 3526. 【NOIP2013模拟11.7A组】不等式(solve)
- [jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
- 【NOIP2013模拟11.7A组】不等式(solve)
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- jzoj. 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- JZOJ 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- jzoj. 3505. 【NOIP2013模拟11.4A组】积木(brick)
- JZOJ 3505. 【NOIP2013模拟11.4A组】积木(brick)
- jzoj. 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)
- jzoj 3520. 【NOIP2013模拟11.7B组】原根(math)
- jzoj. 3522. 【NOIP2013模拟11.7B组】迷宫花园(maze)
- jzoj. 3521. 【NOIP2013模拟11.7B组】道路覆盖(cover)
- jzoj. 3519. 【NOIP2013模拟11.6A组】灵能矩阵(pylon)
- [jzoj]3505. 【NOIP2013模拟11.4A组】积木(brick) (排列组合vsDP)
- jzoj[3521]. 【NOIP2013模拟11.7B组】道路覆盖(cover) (状压DP)
- JZOJ-senior-3502. 【NOIP2013模拟11.4B组】方格游戏
- 51nod 1778 小Q的集合
- 今天是个好日子……吗?
- “玲珑杯”ACM比赛 Round #18
- 几个重要的jquery插件
- Java之TCP和UDP代码实例
- jzoj. 3526. 【NOIP2013模拟11.7A组】不等式(solve)
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析]
- 随机格言生成器(Random Quote Machine)的制作
- Shell实现数字互换和字母大小写互换
- POJ
- 以String为例详解“==”与equals()区别,以及String中重写equals()方法
- uikit——Auto Layout——intrinsic content size
- HDU-Common Subsequence
- iconv命令详解