题解——洛谷P2613 【模板】有理数取余(扩展欧几里得算法+逆元)
题面
题目描述
给出一个有理数 c=\frac{a}{b} ,求 c mod19260817 的值。
输入输出格式
输入格式:
一共两行。
第一行,一个整数 \( a \) 。
第二行,一个整数 \( b \) 。
输出格式:
一个整数,代表求余后的结果。如果无解,输出Angry!
说明
对于所有数据,\( 0\leq a,b \leq 10^{10001},0≤a,b≤1010001 \)
很平常的一道膜板题,求解除法取模需要利用乘法逆元的知识
直接扩展欧几里得算法求解逆元
至于数据范围,可以直接在读入时取模,不需要毒瘤高精度qwq
下面放代码
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
long long a,b;
const int MOD = ;
long long read(void){
long long x=;
char c;
c=getchar();
while(c==' '||c=='\n'||c=='\r'||c=='\0')
c=getchar();
while(c<=''&&c>=''){
x=((x*%MOD)+(c-'')%MOD)%MOD;
c=getchar();
}
return x;
}
long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==){
x=;
y=;
return a;
}
long long res = exgcd(b,a%b,x,y);
long long t=x;
x=y;
y=t-a/b*y;
return res;
}
int main(){
a=read();
// printf("%d\n",a);
b=read();
// printf("%d\n",b);
long long x,y;
if(exgcd(b,MOD,x,y)==){
long long nx=((x%MOD)+MOD)%MOD;
printf("%lld",((a%MOD)*(nx%MOD))%MOD);
}
else{
printf("Angry!\n");
}
return ;
}
题解——洛谷P2613 【模板】有理数取余(扩展欧几里得算法+逆元)的更多相关文章
- [洛谷P2613] [模板] 有理数取余
刷水题. 传送门 看似高精而非高精乃是此题最大亮点. 边读边取模技能get~ #include<cstdio> #define ll long long #define mod 19260 ...
- 题解 洛谷 P3210 【[HNOI2010]取石头游戏】
考虑到先手和后手都使用最优策略,所以可以像对抗搜索一样,设 \(val\) 为先手收益减去后手收益的值.那么先手想让 \(val\) 尽可能大,后手想让 \(val\) 尽可能小. 继续分析题目性质, ...
- 洛谷 P2613 【模板】有理数取余
P2613 [模板]有理数取余 题目描述 给出一个有理数c=\frac{a}{b}c=ba,求c\ \bmod 19260817c mod19260817的值. 输入输出格式 输入格式: 一共两行. ...
- 洛谷——P2613 【模板】有理数取余
P2613 [模板]有理数取余 读入优化预处理 $\frac {a}{b}\mod 19620817$ 也就是$a\times b^{-1}$ $a\times b^{-1}\mod 19620817 ...
- P2613 【模板】有理数取余 (数论)
题目 P2613 [模板]有理数取余 解析 简单的数论题 发现并没有对小数取余这一说,所以我们把原式化一下, \[(c=\frac{a}{b})\equiv a\times b^{-1}(mod\ p ...
- 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...
- 模板 - 数学 - 同余 - 扩展Euclid算法
普通的扩展欧几里得算法,通过了洛谷的扩展欧几里得算法找乘法逆元.修复了容易溢出的bug,虽然新版本仍有可能会溢出longlong,假如参与运算的数字都是longlong,假如可以的话直接使用__int ...
- 模板——扩展欧几里得算法(求ax+by=gcd的解)
Bryce1010模板 /**** *扩展欧几里得算法 *返回d=gcd(a,b),和对应等式ax+by=d中的x,y */ long long extend_gcd(long long a,long ...
- 初等数论-Base-2(扩展欧几里得算法,同余,线性同余方程,(附:裴蜀定理的证明))
我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的 ...
随机推荐
- html5-微格式-时间的格式
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- html5-了解元素的属性
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- uva 12222 Mountain Road
题意: 有一个单行道,两个方向都有车在等待.给出每个车的方向以及到达的时间以及走完这段路所需要的时间. 为了防止车祸,同向两车通过任一点的时间间隔不得小于10s. 求最后一辆车离开时刻的最小值. 思路 ...
- ASP.Net 中操作Ajax
有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺,JQuery中有很多优势,比如异步提交值,部分刷新,给用户很好的体验感.目前为止,大部分项 ...
- Qt Md5应用示例
[1].cpp文件 #include "widget.h" #include "ui_widget.h" #include <QCryptographic ...
- GDB && QString
[1]GDB && QString GDB的print命令仅能打印基本数据类型,而像QString这样的复杂类型就无能为力了! 如果调试时不能看QString的值,很让人抓狂!!!幸好 ...
- 设计模式之Chain of Responsibility(职责链)(转)
Chain of Responsibility定义 Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合, ...
- RSA 加密 解密 公钥 私钥 签名 加签 验签
http://blog.csdn.net/21aspnet/article/details/7249401# http://www.ruanyifeng.com/blog/2013/06/rsa_al ...
- 每日linux命令学习-rpm命令
rpm命令 rpm是一款强大的Redhat软件包管理工具,可创建.安装.查询.验证.升级和卸载每个软件包,软件包是存储文件,包括需要安装的文件和名称.版本.说明等报信息. rpm默认支持7种操作模式, ...
- AngularJS中angular.min.js:80 Error: [ng:areq] http://errors.angularjs.org/1.2.9/ng/areq
报出来的时候,出现这种错误,是因为在引入控制器的时候没有引入成功,我遇到这个错误是在因为没有将父控制器引入到子控制器中.