码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu P2613 【模板】有理数取余

时间:2019-08-07 09:35:16      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:c++   题意   mes   cpp   pre   一个   math   har   getch   

开始学数学了,一脸蒙蔽

题意很明确了。

先把柿子推一下

除以一个数,等于乘这个数的倒数,因此\(\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 【模板】有理数取余

标签:c++   题意   mes   cpp   pre   一个   math   har   getch   

原文地址:https://www.cnblogs.com/fmj123/p/Luogu2613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!