nyoj1235 A/B Problem(扩展欧几里德求逆元)
来源:互联网 发布:zol软件论坛 编辑:程序博客网 时间:2024/06/01 10:20
时间限制:1000 ms |
内存限制:65535 KB
内存限制:65535 KB
难度:3
- 描述
已知:
1. n = (A % 9973);
2. gcd(B, 9973) = 1;
计算:
(A / B) % 9973
- 输入
- 数据的第一行是一个T,表示有T组数据.
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9). - 输出
- 对应每组数据输出(A / B) % 9973.
- 样例输入
-
2
1000 53
87 123456789
- 样例输出
-
7922
6060欧几里德模板题。。
A÷Bmod9973 可以化简为n×B′mod9973 .B′ 为B的逆元, 可以通过B×x+9973×y=1 得到。
#include <stdio.h>const int MOD=9973;typedef long long LL;int extend_Eculid(LL a,LL b,LL &x,LL &y){ if(b==0) { x=1; y=0; return a; } LL r=extend_Eculid(b,a%b,y,x); y-=a/b*x; return r;}//模版而已 对于这道题 一定有解 LL solve(LL b,LL MOD){ LL x,y,res; LL gcd=extend_Eculid(b,MOD,x,y); if(1%gcd) return -1; //无解 if(MOD<0) MOD=-MOD;//如果MOD为负 x=x*1/gcd; res=x%MOD; if(res<0) res+=MOD; return res; }int main(){ int t; scanf("%d",&t); while(t--) { LL n,b; scanf("%lld %lld",&n,&b); LL r=solve(b,MOD); printf("%lld\n",(n*r)%MOD); } return 0;}
1 0
- nyoj1235 A/B Problem(扩展欧几里德求逆元)
- hdu1576 A/B (扩展欧几里德)
- Hdu1576 A-A/B 扩展欧几里德
- HDU 1576 A/B 扩展欧几里德算法
- hdu 1576 A/B 扩展欧几里德
- hdu 1576 A/B 扩展欧几里德算法
- HDU1576 A/B 扩展欧几里德简单题
- hdu1576 A/B(扩展的欧几里德算法)
- HDU 1576 A/B 扩展欧几里德算法
- HDU 1576 A/B (扩展欧几里德算法)
- HDU 1576 A/B 欧几里德扩展方程
- HDUoj 1576 A/B 扩展欧几里德
- UVALive 6428 A+B // 扩展欧几里德
- hdu1576 A/B 扩展欧几里德算法
- HDU 1576 A/B [扩展欧几里德]
- UVALive 6428 A+B 扩展欧几里德
- hdu 1576 A/B(扩展欧几里德)
- [HDU](1576) A/B ----扩展欧几里德(数论)
- Ajax核心——XMLHttpRequest基础
- 使用ionic2开发的一些问题及对策
- 从程序员到项目经理(16):原来一切问题都是可以解决的
- 架构设计二之原型模式、单例模式
- ORACLE 给用户授权truncate table 的实现方案
- nyoj1235 A/B Problem(扩展欧几里德求逆元)
- 支持向量机理论详解
- 关于service保活的思考
- 微信小程序image图片自适应宽度比例显示的方法
- 腾讯2017暑期实习生编程题2--感觉薅了社会主义羊毛的做法
- 互联网+时代下智慧城市发展五大趋势
- JAVA_HOME配置
- RBAC权限管理
- SEAndroid kernel层源码解析1——从hook点到策略点