题目链接

我们先看这个式子:

$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. selenium webdriver 的事件处理

    package www.zr.com; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; imp ...

  2. MySQL与SQLServer的update left join语法区别

    需求: 表A 字段 A_ID, A_NAME, B_ID 表B 字段 B_ID, B_NAME 需求把A的所有A_NAME更新为相应的B的 B_NAME. mysql做法: UPDATE A LEFT ...

  3. 学习神器!本机安装虚拟机,并安装Linux系统,并部署整套web系统手册(包含自动部署应用脚本,JDK,tomcat,TortoiseSVN,Mysql,maven等软件)

    1.   引言 编写目的 本文档的编写目的主要是在Linux系统上部署mis_v3员工管理系统,方便测试,并为以后开发人员进行项目部署提供参考 准备工作 软件部分 软件项 版本 备注 Mysql 5. ...

  4. GROUP BY ROLLUP和CUBE 用法

    ROLLUP和CUBE 用法           Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是Group by  ROLLUP(A, B, C)的话 ...

  5. sqLSERVER 计划缓存

    在这一期的性能调优培训里,我想详细谈下SQL Server里计划缓存及其副作用.在上一周你已经学到,每个提交给SQL Server的逻辑查询会编译成物理执行计划.那个执行计划然后会被缓存,即被称为计划 ...

  6. 一次shell中seq的处理

    一次shell中seq的处理 背景:用要shell 提取 文件中内容,文件名是用序列号如下生成,文件差不多有将近400多w个  如下:  www.ahlinux.com 原始脚本#! /bin/sh# ...

  7. Spring Boot 启动失败,描述/Description: Cannot determine embedded database driver class for database type NONE

    异常截图====> 快速解决方式==> 在SpringBoot的启动类上面添加注解:@EnableAutoConfiguration(exclude={DataSourceAutoConf ...

  8. rpmbuild spec 打包jar变小了、设置禁止压缩二进制文件Disable Binary stripping in rpmbuild

    Disable Binary stripping in rpmbuild 摘自:http://livecipher.blogspot.com/2012/06/disable-binary-stripp ...

  9. 整合Office Web Apps至自己的开发系统

    原文出处:http://www.cnblogs.com/poissonnotes/p/3267190.html 还可参考:https://www.cnblogs.com/majiang/p/36729 ...

  10. Linux下安装Pcntl PHP扩展

    //解压源码包 [root@centos src]# tar -zxvf php-5.5.35.tar.gz //进入pcntl扩展库 [root@centos src]# cd php-5.5.35 ...