ZOJ-3609 Modular Inverse
2015-10-23 17:40
363 查看
/************************************************ * Author :somniloquy * Created Time :2015/10/23 16:27:12 ************************************************/ #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> using namespace std; long long ext_gcd(long long a, long long b, long long& x, long long& y) { long long ans = a; if(b == 0) { x = 1; y = 0; } else { ans = ext_gcd(b, a % b, x, y); long long temp = x; x = y; y = temp - a / b * y; } return ans; } long long cal(long long a, long long b, long long c) { long long x, y; long long gcd = ext_gcd(a, b, x, y); if(c % gcd != 0) return -1; x *= c / gcd; b /= gcd; if(b < 0) b = -b; long long ans = x % b; if(ans <= 0) ans += b; return ans; } int main(void) { long long a, m, t; scanf("%lld", & t); while(t --) { scanf("%lld %lld", & a, & m); long long ans = cal(a, m, 1); if(ans == -1) printf("Not Exist\n"); else printf("%lld\n", ans); } return 0; }
题目:
求一个最小的正整数x,使a乘以x对m的取余等于1对m的取余。
题解:
ZOJ有毒? %lld AC %I64d TLE 。???
x = y。
y = x。- a / b * y。
通解
x = x。 + b / gcd * t
y = y。 - a / gcd * t
a * x === 1 (mod m)
a * x + m * y = 1
相关文章推荐
- ubuntu 使用命令行连接wifi
- 爱情智慧:从恋爱走向婚姻必备的理念
- 【SSH项目实战】国税协同平台-5.头像上传功能
- Android开发 关于软键盘的 打开与关闭
- 工作周报064
- 阿里DRC介绍 zt
- app安全性测试
- 2015.10.22
- android系统编译记录
- UDP:用户数据报协议
- AndroidManifest.xml详解分析
- 结构体字节对齐
- JS获取指定年月天数
- spring的bean加载2
- ffmpeg如何从内存读取h264音视频流进行解码显示
- 数组循环右移
- 可回收对象的判定方法和垃圾收集算法
- Myecilpse,Eclipse安装Freemarker插件
- java获取项目路径
- PHP开源项目使用Travis CI进行持续集成