HDOJ-1576(数论)
来源:互联网 发布:百度蓝天算法 编辑:程序博客网 时间:2024/06/05 12:49
看着像扩展欧几里得,努力往上面凑吧。
令M=9973,X=A/B, Y=A/M
因为n=A%M=A-(A/M)*M=BX-MY
现在有BX-MY=n了,B和M是已知的,X,Y未知的,距离扩展欧几里得还差一点。
由于gcd(B,M)=1(题干里说了,要利用上),利用扩展欧几里得我们可以算出BX‘+MY’=1中X'和Y'的值、
(关于系数正负号的问题,还有待学习......)
X=N*X',最后为了防止X出现负数,需要处理一下。
#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;typedef long long LL;const int m=9973;//计算 ax+by=gcd(a,b),返回gcd值,求出xyLL Ex_gcd(LL a, LL b, LL &x, LL &y){ LL d; if(a==0 && b==0) return -1; if(b==0) { x = 1; y = 0; return a; } d = Ex_gcd(b, a%b, y, x); y -= a / b * x; return d;}void work(){ LL n,b,x,y; scanf("%I64d%I64d",&n,&b); Ex_gcd(b,m,x,y); x *= n; //处理一下,防止出现X出现负数 x = (x % m + m) % m; printf("%I64d\n", x);}int main(){ int T; scanf("%d",&T); while(T--) work(); return 0;}
0 0
- HDOJ-1576(数论)
- HDOJ 1576 A/B(数论整除)
- HDOJ-1211 RS(数论)
- hdoj-5120-Intersection【数论】
- HDOJ-2669 Romantic(数论)
- HDU/HDOJ 1211 RSA 数论
- HDOJ--3037--Saving Beans【数论】
- 【数论】 HDOJ 1573 X问题
- hdoj 1061 Rightmost Digit 【数论】
- hdoj 1060 Leftmost Digit 【数论】
- hdoj-4790-Just Random【数论】
- HDOJ 1021 Fibonacci Again 【数论】
- HDOJ 2674-N!Again【数论】
- HDOJ 1319 Prime Cuts<数论>
- HDOJ 2674-N!Again【数论】
- 【数论】 HDOJ 1788 Chinese remainder theorem again
- 20141002 【 数论--概率 】 hdoj 5035 Delivery
- HDOJ-3240 Counting Binary Trees(数论)
- 关于Activity突然重启
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- SVM中的拉格朗日乘数法和KKT条件的深入解析
- 【Struts2框架】第六节拦截器-拦截器介绍和总结
- 给Python初学者的一些技巧
- HDOJ-1576(数论)
- WIN 2008执行任务时所产生的代码所包含的意思。(部分)
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
- C# Regex 类
- Windows Server 2008 R2域控时间同步internet时间
- 把UIView转成UIImage,解决模糊失真问题
- 最少拦截系统 SDUToj 2075
- Scala练习(三)
- 关于cocos2dx 3.x自适配屏幕