#58-【扩展欧几里得】a/b

本文介绍了一种通过扩展欧几里得算法解决特定数学问题的方法:给定A能被B整除且A%B的值n,求解(A/B)%9973的问题。此问题要求在已知A对9973取模的余数及除数B的情况下,求解A除以B后再对9973取模的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。

Input

数据的第一行是一个T(1<=T<=1,000,000),表示有T组数据。

每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。

Output

对应每组数据输出(A/B)%9973。

Sample Input

2
1000 53
87 123456789

Sample Output

7922
6060

扩展欧几里得......

#include <iostream>

using namespace std;

int x, y;

void gcd(int a, int b) // 扩展欧几里得.
{
	int t;
	
	if (b)
	{
		gcd(b, a % b);
		t = x;
		x = y;
		y = t - (a / b) * y;
	}
	else
	{
		x = 1;
		y = 0;
	}
	
	return;
}

int main(void)
{
	int a, b;
	
	scanf("%d", &a); // 化(tou)简(lan).
	while (~scanf("%d%d", &a, &b))
	{
		gcd(b, 9973);
		printf("%d\n", (x + 9973) * a % 9973); // 化简*2
	}
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值