luogu P2613 【模板】有理数取余(费马小定理,乘法逆元)

整理的算法模板合集: ACM模板


题目传送门

在这里插入图片描述

相当于是一个高精的费马小定理求乘法逆元。虽然数据达到了 1 0 10001 10^{10001} 1010001,但是我们可以使用快读然后一直模mod即可。

然后就是直接求一下乘法逆元即可。

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
//__int128, __int128_t
//#define int _int128
const int N = 500007, M = 500007, INF = 0x3f3f3f3f;
const double eps = 1e-6;
const ll mod = 19260817;
typedef pair<int, int >PII;

inline void read(ll & x)
{
    x = 0;
    char o = getchar();
    while(o < '0' || o > '9')o = getchar();
    while(o >= '0' && 0 <= '9'){
        x = ((x << 1) + (x << 3) + (o ^ 48)) % mod;
        o = getchar();
    }
}

ll qpow(ll a, ll b, ll mod)
{
    ll res = 1;
    while(b){
        if(b & 1)res = res % mod * a % mod;
        a = (a * a) % mod;
        b >>= 1;
    }
    return res % mod;
}

ll a, b;

int main()
{
    read(a);read(b);

    if(b == 0){
        puts("Angry!");
        return 0;
    }

    ll p = qpow(b, mod - 2, mod);
    //p = (p % mod + mod)  % mod;
    printf("%lld\n",                                                                                                                                                                                                                                                                                                p % mod * a % mod);
    return 0;
}

©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页