P2613 【模板】有理数取余

原题链接

题解


然后就变成了求解同余方程

code

#define ll long long
#include<bits/stdc++.h>
const ll mod=19260817;
using namespace std;
ll x,y;
ll c;
ll a,b;

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

inline void write(ll x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

void exe(ll a1, ll b1)
{
    if(b1 == 0)
    {
        x = a / a1;
        y = 0;
        return;
    }
    exe(b1, a1 % b1);
    ll x2 = x, y2 = y;
    x = y2;
    y = x2 - a1 / b1 * y2;
}

int main()
{
    read(a);
    read(b);
    exe(b, mod);
    x = (x % mod + mod) % mod;
    write(x);
    putchar('\n');
    return 0;
}
posted @ 2024-04-04 18:38  纯粹的  阅读(18)  评论(0)    收藏  举报