题解——洛谷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(解一定存在,根据数论中的 ...
随机推荐
- Sitecore CMS中删除项目
如何删除项目以及如何在Sitecore CMS中恢复已删除的项目. 删除项目 有多种方便的方法可以删除Sitecore中的项目. 从功能区 在内容树中选择您要删除的项目. 单击功能区中“主页”选项卡的 ...
- Python 连接SQL Server数据库 - pymssql使用基础
1. 官方api http://www.pymssql.org/en/stable/ref/pymssql.html 我学习自这里
- Git简明使用教程
猴子都能懂的GIT入门 https://backlog.com/git-tutorial/cn/git - 简易指南(这份教程挺好的) http://www.bootcss.com/p/git-gui ...
- flask 使用Flask-WTF处理表单
使用Flask-WTF处理表单 扩展Flask-WTF继承了WTFforms,使用它可以在flask中更方便的使用WTForms.Flask-WTF将表单数据解析.CSRF保护.文件上传等功能与Fla ...
- Windows Services(NT)
本文主要记录什么是Windows Service,及其主要组成?并通过一个列子来创建一个Windows Services,同时,记录几个在查资料碰到的问题. Windows Services全文简称N ...
- [转载]FileStream读写文件
FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...
- how to backup your system of Autel MS908 Pro
how to backup your system of Autel Scan Tool Autel MS908 Pro: Connect the tablet to a PC desktop or ...
- 实用的 图片上传 html+css
html <form id="mainForm"> <div class="content"> <div class=" ...
- GROUP BY 和 ORDER BY 同时使用问题
GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面.
- 在linux系统中安装redis
使用的工具是 连接上虚拟机,进入安装文件的目录 进入redis压缩包中 将压缩包解压: tar -zxvf redis-2.8.3.tar.gz 进入这个文件中: cd redis-2.8.3 进入 ...