Luogu P2613 模板有理数取余
Posted fmj123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu P2613 模板有理数取余相关的知识,希望对你有一定的参考价值。
开始学数学了,一脸蒙蔽
题意很明确了。
先把柿子推一下
除以一个数,等于乘这个数的倒数,因此\(\frac ab\)等于\(a\)乘\(b\)在\(192\)\(60817\)
意义下的逆元。用快速幂求\(a*b^{19260815}\)即可
而\(a,b\)过于大,必须使用快读,且边读边膜,而膜操作对最后的得数是不会有影响的。不过要注意一下快读的写法,不能写挫了。
当\(b \mod 192\)\(60817=0\)时,\(b\)没有逆元,故输出Angry!
上代码
#include<bits/stdc++.h>
using namespace std;
const int mod=19260817;
long long a,b,p;
int read()
{
int ans=0;char ch;
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9')
{
ans=((ans*10)%mod+ch-'0')%mod;
ch=getchar();
}
return ans;
}
long long fpow(int x,int y)
{
long long s=x,ans=1;
while (y)
{
if (y&1)
{
ans*=s;
ans%=mod;
}
s*=s;
s%=mod;
y>>=1;
}
return ans;
}
int main()
{
a=read();b=read();
if(!b) {cout<<"Angry!";return 0;}
cout<<(a*fpow(b,mod-2))%mod<<endl;
return 0;
}
以上是关于Luogu P2613 模板有理数取余的主要内容,如果未能解决你的问题,请参考以下文章