博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解 P2613 【【模板】有理数取余】
阅读量:4981 次
发布时间:2019-06-12

本文共 1868 字,大约阅读时间需要 6 分钟。

我们先看这个式子:

$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
#include
#include
#include
using namespace std;const int p=19260817;int a[10100];int b[10100];char a1[10100];char b1[10100];int l1,l2;int len1,len2;long long x,y;long long pow2(long long a,long long b){ long long res=1; for(;b;b>>=1,a=a*a%p) if(b&1) res=res*a%p; return res%p;}void calculet_1(){ long long num=0; for(int i=len1;i<=len1+8;i++) num*=10,num+=a[i]; num%=p; for(int i=len1+8;i>=len1;i--) { int now=num%10;num/=10; a[i]=now; } for(int i=0;i<=8;i++) if(a[len1+i]!=0){len1+=i;break;}}void calculet_2(){ long long num=0; for(int i=len2;i<=len2+8;i++) num*=10,num+=b[i]; num%=p; for(int i=len2+8;i>=len2;i--) { int now=num%10;num/=10; b[i]=now; } for(int i=0;i<=8;i++) if(b[len2+i]!=0){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=0;i
=10) calculet_1(); while(l2-len2>=10) calculet_2();//计算,我是从高位到低位依次减的,可以省时间。 for(int i=len1;i

 

转载于:https://www.cnblogs.com/cn-suqingnian/p/9180335.html

你可能感兴趣的文章
ubuntu下SiLabs EC3调试C8051F 单片机
查看>>
php使用递归创建多级目录
查看>>
windows下配置nginx+php环境
查看>>
阿里云时间服务器
查看>>
流密码_电子科大慕课笔记_七八讲
查看>>
Mac系统下安装ipython分别支持python2和python3
查看>>
数学图形(1.45)毛雷尔玫瑰(Maurer rose)
查看>>
python中的关键字---3(内置函数)
查看>>
移动端键盘定制
查看>>
CodeForces 893C (并查集板子题)
查看>>
laravel数据迁移
查看>>
POJ 1316 Self Numbers
查看>>
python标准库之zipfile
查看>>
最短路径-迪杰斯特拉算法(Dijkstra) (简单讲解
查看>>
Redis批量删除脚本
查看>>
lightoj 1061 - N Queen Again(状压dp)
查看>>
codeforces 830 B. Cards Sorting(线段树)
查看>>
linux设置密码过期时间/etc/login.defs
查看>>
Hello World!
查看>>
权限认证
查看>>