1576 mod 运算的逆元

Problem Description

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

Input

数据的第一行是一个T,表示有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 <cstdio>
#include <iostream>

using namespace std;

int main(){
	int t;
	cin >> t;

	while(t --){
		long long int n,b;
		int i;
		cin >> n >> b;
		for(i = 1;i <= 9973;i++){
			if(i * b % 9973 == 1){
				break;
			}
		}
		cout << n * i % 9973 << endl;
	}
	return 0;
} 

a/b % n  = a * b^-1 % n,也就是a/b可以换成a乘上b对于模n群的逆元的模

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 22:03:58

1576 mod 运算的逆元的相关文章

JS中的MOD运算

最近研究汉诺塔非递归的时候,看到书上写了个MOD,久违啊,感觉好久没看到过了,都忘了怎么用了. 某人:我知道,这不就是取余嘛,直接%就行了. 嗯......,如果是python语言,你说的很对,但是我要的是JS中的.搜了下,貌似JS中没有MOD方法.便于学习的使用,自己写了个. 废话不多说,直接上代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>MO

mod 运算与乘法逆元

%运算 边乘边mod 乘法 除法 mod 希望计算5/2%7=6 乘法 除法 mod 希望计算5/2%7=6 两边同时/x 在取mod(p)运算下,a/b=a*bp-2 bp-2 =1/b bp-2 是b的乘法逆元 =6 P3811  P1082 P不为素数 Φ(m)欧拉函数: 1— m中有多少个数和m互质 Φ(p)= p-1 当m不是质数的时候 暴力: 题目让干啥就干啥 暴力是个技术活 (shang ke bu nu li ,bao li chu qi ji) 原文地址:https://www

hdu 1576 A/B (求逆元)

题目链接 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). Input 数据的第一行是一个T,表示有T组数据.每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9). Output 对应每组数据输出(A/B)%9973. Sample Input 2 1000 53 87 123456789 Sample Output 792

HDU - 1576(费马小定理求逆元)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9278    Accepted Submission(s): 7452 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%99

a ^ b mod c 取模运算优化反思(老物)

这是一篇嘲讽我之前的自己采用笨重愚蠢思想去解决问题的日志. RSA 加密与解密涉及到 a ^ b mod c 的问题,如何计算这个值呢? 我会选择 pow(a, b) % c, 事实上在写RSA的时候确实是这么干的,但现在看来真心愚蠢, 因为我为此不得不去实现了一个自己的大数四则运算库,也就是以数组为数(BigNum),而对于mod运算只需要换算为 A % B = A - ( A / B ) * B , 好吧,我自认为轮子准备充分了, 很快就写完了,也觉得很满意,也没什么不合适的地方,但现在开始

求乘法逆元的几种方法

(数学渣,下面的文字可能有误,欢迎指教)乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减乘与模运算的顺序交换不会影响结果,但是除法不行.有的题目要求结果mod一个大质数,如果原本的结果中有除法,比如除以a,那就可以乘以a的逆元替代. 在mod p的运算中,a存在乘法逆元当且仅当a与p互质.一般题目给的是一个大质数,所以只要a不是p的倍数,就以求乘法逆元. 目前了解到的求法有三种:1.扩展

求乘法逆元

由于在计算除法时,mod 运算不能直接加在除数被除数后,因此需要将 n / a (mod b )转化为 n * x (mod b ),以便于进行模运算.求 x 的过程就称为求逆元. 对于 a .b (a 与 b 互素)满足 n / a ≡ n * x (mod b ),则称 x 为 a 模 b 的逆元: 一般有两种求逆元的方式:扩展欧几里得求逆元和欧拉-费马定理求逆元: 1.扩展欧几里得求逆元: 见(欧几里得与扩展欧几里得): http://www.cnblogs.com/cenariusxz/

HDU - 5976 Detachment(逆元)

题意:将一个数x拆成a1+a2+a3+……,ai不等于aj,求最大的a1*a2*a3*……. 分析: 1.预处理前缀和前缀积,因为拆成1对乘积没有贡献,所以从2开始拆起. 2.找到一个id,使得2+3+4+……+id - 1(sum[id-1]) < x < 2+3+4+……+id(sum[id).(二分找即可) 则rest = x - sum[id - 1].将rest分配给2+3+4+id-1中的某个数. 3.在保证数字不重复的前提下,分配给的那个数越小越好,证明见4. 因此,应该分配给的

C位运算笔记(根据网上内容整理)1

什么是位运算?    程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快. 各种位运算的使用 === 1. and运算 ===(同真为真) and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位.这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数. === 2. or运算 ===(一真为真) or运算通