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 模板有理数取余的主要内容,如果未能解决你的问题,请参考以下文章

题解 P2613 模板有理数取余

有理数取余

[模板] 有理数取余

Luogu 题解 P1226 [模板] 快速幂||取余运算

LuoguP1226 模板快速幂||取余运算

luogu 1939模板矩阵加速(数列)