题面

题目描述

给出一个有理数 c=\frac{a}{b}  ​ ,求  c mod19260817  的值。

输入输出格式

输入格式:

一共两行。

第一行,一个整数 \( a \) 。
第二行,一个整数 \( b \) 。


输出格式:

一个整数,代表求余后的结果。如果无解,输出Angry!

说明

对于所有数据,\(  0\leq a,b \leq 10^{10001},0≤a,b≤1010001 \)

很平常的一道膜板题,求解除法取模需要利用乘法逆元的知识

直接扩展欧几里得算法求解逆元

至于数据范围,可以直接在读入时取模,不需要毒瘤高精度qwq

下面放代码

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4. using namespace std;
  5. long long a,b;
  6. const int MOD = ;
  7. long long read(void){
  8. long long x=;
  9. char c;
  10. c=getchar();
  11. while(c==' '||c=='\n'||c=='\r'||c=='\0')
  12. c=getchar();
  13. while(c<=''&&c>=''){
  14. x=((x*%MOD)+(c-'')%MOD)%MOD;
  15. c=getchar();
  16. }
  17. return x;
  18. }
  19. long long exgcd(long long a,long long b,long long &x,long long &y){
  20. if(b==){
  21. x=;
  22. y=;
  23. return a;
  24. }
  25. long long res = exgcd(b,a%b,x,y);
  26. long long t=x;
  27. x=y;
  28. y=t-a/b*y;
  29. return res;
  30. }
  31. int main(){
  32. a=read();
  33. // printf("%d\n",a);
  34. b=read();
  35. // printf("%d\n",b);
  36. long long x,y;
  37. if(exgcd(b,MOD,x,y)==){
  38. long long nx=((x%MOD)+MOD)%MOD;
  39. printf("%lld",((a%MOD)*(nx%MOD))%MOD);
  40. }
  41. else{
  42. printf("Angry!\n");
  43. }
  44. return ;
  45. }

题解——洛谷P2613 【模板】有理数取余(扩展欧几里得算法+逆元)的更多相关文章

  1. [洛谷P2613] [模板] 有理数取余

    刷水题. 传送门 看似高精而非高精乃是此题最大亮点. 边读边取模技能get~ #include<cstdio> #define ll long long #define mod 19260 ...

  2. 题解 洛谷 P3210 【[HNOI2010]取石头游戏】

    考虑到先手和后手都使用最优策略,所以可以像对抗搜索一样,设 \(val\) 为先手收益减去后手收益的值.那么先手想让 \(val\) 尽可能大,后手想让 \(val\) 尽可能小. 继续分析题目性质, ...

  3. 洛谷 P2613 【模板】有理数取余

    P2613 [模板]有理数取余 题目描述 给出一个有理数c=\frac{a}{b}c=ba​,求c\ \bmod 19260817c mod19260817的值. 输入输出格式 输入格式: 一共两行. ...

  4. 洛谷——P2613 【模板】有理数取余

    P2613 [模板]有理数取余 读入优化预处理 $\frac {a}{b}\mod 19620817$ 也就是$a\times b^{-1}$ $a\times b^{-1}\mod 19620817 ...

  5. P2613 【模板】有理数取余 (数论)

    题目 P2613 [模板]有理数取余 解析 简单的数论题 发现并没有对小数取余这一说,所以我们把原式化一下, \[(c=\frac{a}{b})\equiv a\times b^{-1}(mod\ p ...

  6. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  7. 模板 - 数学 - 同余 - 扩展Euclid算法

    普通的扩展欧几里得算法,通过了洛谷的扩展欧几里得算法找乘法逆元.修复了容易溢出的bug,虽然新版本仍有可能会溢出longlong,假如参与运算的数字都是longlong,假如可以的话直接使用__int ...

  8. 模板——扩展欧几里得算法(求ax+by=gcd的解)

    Bryce1010模板 /**** *扩展欧几里得算法 *返回d=gcd(a,b),和对应等式ax+by=d中的x,y */ long long extend_gcd(long long a,long ...

  9. 初等数论-Base-2(扩展欧几里得算法,同余,线性同余方程,(附:裴蜀定理的证明))

    我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的 ...

随机推荐

  1. Vue系列之 => 自定义键盘修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. html5-常用的通用元素

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. MySql 应用语句

    [1]MySQL基础语句 -- 查询mysql版本号 SELECT VERSION(); -- 创建数据库 DROP DATABASE IF EXISTS study; -- 如果存在先删除 CREA ...

  4. Java8函数式编程探秘

    引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...

  5. 设计模式之Proxy(代理)(转)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  6. linux常用命令:touch 命令

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a    ...

  7. 那些年 Qzone

    那些年转在Qzone里的: 不喊痛,不一定没感觉.不要求,不一定没期待.不落泪,不一定没伤痕.不说话,不一定没心声.沉默,不代表自己没话说.离开,不代表自己很潇洒.快乐,不代表自己没伤心.幸福,不代表 ...

  8. 自学Java第三个星期的总结

    在这一周里我在网上学习了java的分支结构.Number&Matht类.Character类.string类.String Buffer和String Builder类以及数组和日期时间等有关 ...

  9. Hadoop学习笔记之三:DataNode

    DataNode对ClientDatanodeProtocol.InterDatanodeProtocol两个协议接口进行了实现,通过ipc::Server向Client.其它DN提供RPC服务(参见 ...

  10. django 正向,反向

    表名 ,foreignkey, 正向 obj.表名小写_set.all() 反向操作.