洛谷P2613有理数取余题解

预计阅读时间: 1 分钟 836 次阅读 236 字 最后更新于 2022-09-06 算法与数据结构


逆元

题目描述

给出一个有理数c=ab ,求cmod19260817的值。

输入格式

一共两行。

第一行,一个整数a
第二行,一个整数b

输出格式

一个整数,代表求余后的结果。如果无解,输出Angry!

题解

对于c=abcmod19260817,相当于求abmod19260817也就是a×b1mod19260817

之后我们求个逆元就行啦。

exgcd求逆元证明(倒推):

ax+by=1

axmodb+bymodb=1modb

axmodb+0=1modb

axmodb=1modb

ax1(modb)

Code (不要打我,懒得高精)

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
def exgcd(a, b): # 求exgcd
if(b == 0):
x = 1
y = 0
return x, y
x, y = exgcd(b, a % b)
tx = x
x = y
y = tx - (a // b) * y
return x, y
mod = 19260817
a = int(input())
b = int(input())
if (b == 0): # 0不能做除数
print("Angry!")
else:
x, y = exgcd(b, mod)
x = (x % mod + mod) % mod
print(a*x % mod)

THE END