HDU1576 A/B
来源:互联网 发布:javascript toast 编辑:程序博客网 时间:2024/05/17 03:38
题目:
http://acm.split.hdu.edu.cn/showproblem.php?pid=1576
分析:
我们有 A/B ≡ x (mod9973)
即 A/B = 9973*y + x
即 A = 9973*B*y + B*x
即 A%9973 = (B*x) %9973 = n
即 B*x ≡ n (mod9973)
即 B*x + 9973*y = n
这就化简为一个模线性方程ax+by=c的形式了,其中a=B,b=9973,c=n
解得x即可
代码:
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;long long exgcd(long long a,long long b,long long& x,long long &y){ if(b==0) { x=1; y=0; return a; } long long r=exgcd(b,a%b,y,x); y-=x*(a/b); return r;}int main(){ int T; long long t,a,b,c,gcd,x,y,n,B; scanf("%d",&T); while(T--) { scanf("%I64d%I64d",&n,&B); a=B; b=9973; c=n; gcd=exgcd(a,b,x,y); x*=c/gcd; t=b/gcd; if(x>=0) x%=t; else x=x%t+t; printf("%I64d\n",x); } return 0;}
阅读全文
0 0
- hdu1576-A/B
- hdu1576 A/B
- hdu1576 A/B
- hdu1576- A/B
- HDU1576 A/B
- #HDU1576# A/B
- A/B HDU1576
- HDU1576 A/B
- A/B(HDU1576)
- hdu1576 A/B (扩展欧几里德)
- HDU1576 A/B(求逆元)
- HDU1576 A/B 扩展欧几里得
- HDU1576 A/B(扩展欧几里得)
- [hdu1576]: A/b (扩展欧几里得)
- hdu1576--A/B(逆元)
- Hdu1576 A-A/B 扩展欧几里德
- A/B(hdu1576 乘法逆元)
- HDU1576 A/B 扩展欧几里德简单题
- 反射访问成员变量
- C语言算法27-37
- C++随机生成二维数组
- 20岁生日
- Codeforces Round #439
- HDU1576 A/B
- Ado.Net学习笔记
- 【笔记】美团案例-旅游推荐系统的演进
- 详解Java中的clone方法 -- 原型模式
- openstack heat redis_HA_redis_sentinel_keepalived
- 焦点轮播图(3) 无限滚动
- Python 列表生成式(List Comprehensions)
- 【机器学习 吴恩达】CS229课程笔记notes1翻译-Part I线性回归
- JZOJsenior1481.偷懒的西西【推荐】