题目链接

我们先看这个式子:

$c=\dfrac{a}{b}$ $ $ $ $ $mod$ $ $ $ $ $19260817$

某正常高中生:这$……$

---

对于这个 $c$ 。

显然,它很可能是小数。

那么, $double$ 的取余你老师讲过么$?!!!$

所以,我们要~~化简~~魔改一下这个式子。

---

$$c=\dfrac{a}{b}=a*b^{-1}$$

又因为是 $mod$ $ $ $p=19260817$ 的意义下的计算。

所以,现在就有了一种化小数为整数的方法:

 乘法逆元

$c=a*b^{-1}≡a*b^{p-2}$ $ $ $ $ $ mod $ $ $ $ $ $ p $

而在这里, $ p $ $ = $ $ 19260817 $

并且,当 $b^{p-2}≡0$ $ $ $ $ $ mod $ $ $ $ $ $ p $ 时,

分母为 $0$ ,无解。

所以答案就出来了。

---

好了,天真的认为我~~们~~以为这样就行了。

然而$……$

$0≤a,b≤10^{10001}$

高精模低精按位先模到 $int$ 或 $long$ $ $ $ long$ 以内,在做。

然后调了三天终于$A$了。

---

本宝宝在这里在吐槽一番:

定义变量忘了初始化$……$

数据出锅玄学$RE$ $……$

也是没谁了。

---

上代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int p=;
int a[];
int b[];
char a1[];
char b1[];
int l1,l2;
int len1,len2;
long long x,y; long long pow2(long long a,long long b)
{
long long res=;
for(;b;b>>=,a=a*a%p) if(b&) res=res*a%p;
return res%p;
} void calculet_1()
{
long long num=;
for(int i=len1;i<=len1+;i++)
num*=,num+=a[i]; num%=p;
for(int i=len1+;i>=len1;i--)
{
int now=num%;num/=;
a[i]=now;
} for(int i=;i<=;i++) if(a[len1+i]!=){len1+=i;break;}
} void calculet_2()
{
long long num=;
for(int i=len2;i<=len2+;i++)
num*=,num+=b[i];
num%=p;
for(int i=len2+;i>=len2;i--)
{
int now=num%;num/=;
b[i]=now;
} for(int i=;i<=;i++) if(b[len2+i]!=){len2+=i;break;}
} signed main()
{
// freopen("testdata.in","r",stdin);
// freopen("1.out","w",stdout); scanf("%s",a1);
scanf("%s",b1);
// printf("%s\n",b1);
l1=strlen(a1);
l2=strlen(b1);//输入以及处理数据。 for(int i=;i<l1;i++)
a[i]=a1[i]-'';
for(int i=;i<l2;i++)
b[i]=b1[i]-'';//将char 变int(个人不习惯用char做运算) while(l1-len1>=) calculet_1();
while(l2-len2>=) calculet_2();//计算,我是从高位到低位依次减的,可以省时间。 for(int i=len1;i<l1;i++) x*=,x+=a[i];
for(int i=len2;i<l2;i++) y*=,y+=b[i];
x%=p;y%=p;//计算取模之后的值。 // printf("%lld\n",y);
if(x==){puts("");return ;}
if(y==){puts("Angry!");return ;}//特判 long long ans=pow2(y,p-);
// printf("%lld\n",ans);
ans=(ans*x)%p; printf("%lld",ans);//计算答案和输出
return ;//程序拜拜
}

题解 P2613 【【模板】有理数取余】的更多相关文章

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

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

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

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

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

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

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

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

  5. P2613 有理数取余

    原题链接 https://www.luogu.org/problemnew/show/P2613 在这里虽然是讲洛谷的题解,但用到的数论知识,归并到数论里也不为过! 进入正题: 首先看到题面:给出一个 ...

  6. 题解——洛谷P2613 【模板】有理数取余(扩展欧几里得算法+逆元)

    题面 题目描述 给出一个有理数 c=\frac{a}{b}  ​ ,求  c mod19260817  的值. 输入输出格式 输入格式: 一共两行. 第一行,一个整数 \( a \) .第二行,一个整 ...

  7. P2613 【模板】有理数取余

    题目描述 给出一个有理数 $c=\frac{a}{b}$ ,求 c mod 19260817 的值. 输入输出格式 输入格式: 一共两行. 第一行,一个整数 aa .第二行,一个整数 bb . 输出格 ...

  8. 数学【p2613】 【模板】有理数取余(费马小定理)

    题目描述 给出一个有理数 c=a/b ,求 c mod 19260817的值. 说明 对于所有数据, 0≤a,b≤10^10001 分析: 一看题 这么短 哇简单!况且19260817还是个素数!(美 ...

  9. [洛谷P2613]【模板】有理数取余

    题目大意:给你$a,b(a,b\leqslant10^{10001})$,求出$\dfrac a b\equiv1\pmod{19260817}$,无解输出 Angry! 题解:在读入的时候取模,若$ ...

随机推荐

  1. 使用CallableStatement接口调用存储过程

    直接上下代码: package com.learn.jdbc.chap07; import java.sql.CallableStatement; import java.sql.Connection ...

  2. HttpURLConnection连接网页和获取数据的使用实例

    HttpURLConnection是java.net 里面自带的一个类,非常好用.虽然现在很多人用阿帕奇的HttpClient,但HttpURLConnection也是个不错的选择. 其实使用方法非常 ...

  3. Libevent使用例子,从简单到复杂

    转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39670221 本文从简单到复杂,展示如何使用libevent.网上的许多例子都是只有服务 ...

  4. SkyBox

    [SkyBox] Skyboxes 本质是一个Material,这个Meterial的shader必须设置为ShaderFX/Skybox. SkyBox可以被绑定到摄像机或设置一个全局的SkyBox ...

  5. java中链表的数据(对象)位置交换

    用LinkedList类的set方法把引用 对象换了就行 ,如 import java.util.LinkedList; public class Tffdsafsdafsad { public st ...

  6. Cannot connect to the Docker datemon at tcp://0.0.0.0:2375 is the docker daemon runing?

    一.系统环境: 在Windows 7 64位上,采用Vmware workstation 12安装了CenOS7.5 64位. 二.问题 在CentOS7.5里安装了Docker,启动docker服务 ...

  7. matplotlib的颜色和控制条

    为了方便记忆,收藏备用 一 linestyle '-' solid line style '--' dashed line style '-.' dash-dot line style ':' dot ...

  8. 使用Cytoscape画PPI网络图

    打开Cytoscape软件,根据菜单导入string_interactions.tsv文件 File ----> Import ----> Network from File 会弹出下图对 ...

  9. python文件处理os模块

    一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...

  10. AIO和NIO的理解

    AIO: AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成,可以继续做 另外的事情,等I/O操作完成,内核会通过函数回调或者信号机制通知用户进程.这样很大程度提高了 ...