题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1576

题目大意:求(A/B)mod 9973。但是给出的A是mod形式n,n=A%9973。

解题思路

两种思路,一种从乘法逆元角度,另一种从扩展GCD推公式角度。

①乘法逆元:

先来看下逆元和乘法逆元的关系,对于A*X=B,有X=A-1*B,A-1就是普通的逆元了,在这里就是倒数。

如果A*X=B mod n,变成同余式了,那么A-1依然是存在的,只不过不是倒数了,一般把同余之后的逆元称为乘法逆元。( - -。好像这个定义是错的)。

题目如果是(A/B) mod 9973, 那就麻烦了,因为乘除法不支持mod同余运算,需要转化为逆元计算,乘法变除法,除法变乘法。且题目说gcd(B,9973)=1,所以取B的乘法逆元b=mod_reverse(B,9973)。

那么题目就转化成(A*b)mod 9973,再化简一下,(A%9973*b)%9973, 因为A%9973=n,

所以最后结果就是(n*b)mod 9973

#include "cstdio"
#define LL long long
LL ex_gcd(LL a,LL b,LL &x,LL &y)
{
if(a==&&b==) return -;
if(b==) {x=;y=;return a;}
LL d=ex_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
LL mod_reverse(LL a,LL n)
{
LL x,y,d=ex_gcd(a,n,x,y);
if(d==) return (x%n+n)%n;
else return -;
}
int main()
{
LL T,n,B;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d%I64d",&n,&B);
LL x=mod_reverse(B,);
printf("%I64d\n",(n*x)%);
}
}

②扩展GCD角度:

设A=9973*y+n,因为A%B=0,所以(9973*y+n)=B*x,其中x=A/B

移项,有B*x+9973*(-y)=n。

联想到扩展GCD的式子:B*X+9973*Y=1,两边都乘以n,B*(nX)+9973*(nY)=n。

这样x=nX,y=-nY,只要求出X和Y就行了,套扩展GCD模板即可。

注意这里扩展GCD求出的一组x和y可能都是负值,如果x%9973是错的,对负数取模的方法是(x%mod+mod)%mod.

#include "cstdio"
#define LL long long
LL ex_gcd(LL a,LL b,LL &x,LL &y)
{
if(a==&&b==) return -;
if(b==) {x=;y=;return a;}
LL d=ex_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main()
{
LL T,n,B;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d%I64d",&n,&B);
LL x,y;
ex_gcd(B,,x,y);
x*=n;
printf("%I64d\n",(x%+)%);
}
}
12168956 2014-11-13 00:56:37 Accepted 1576 0MS 228K 519B C++ Physcal

 

HDU 1576 (乘法逆元)的更多相关文章

  1. hdu 1576 求逆元

    题意:给出n=A mod 9973和B,求(A/B) mod 9973 昨天用扩展欧几里得做过这题,其实用逆元也可以做. 逆元的定义:例如a*b≡1 (mod m),则b就是a关于m的逆元. 求逆元方 ...

  2. 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...

  3. HDU 5651 计算回文串个数问题(有重复的全排列、乘法逆元、费马小定理)

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=5651 很容易看出来的是,如果一个字符串中,多于一个字母出现奇数次,则该字符串无法形成回文串,因为不能删减 ...

  4. HDU 1452 (约数和+乘法逆元)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1452 题目大意:求2004^X所有约数和,结果mod 29. 解题思路: ①整数唯一分解定理: 一个 ...

  5. hdu 2669 Romantic (乘法逆元)

    Romantic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)

    题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...

  7. Hdu 1452 Happy 2004(除数和函数,快速幂乘(模),乘法逆元)

    Problem Description Considera positive integer X,and let S be the sum of all positive integer diviso ...

  8. HDU 4828 Grids(卡特兰数+乘法逆元)

    首先我按着我的理解说一下它为什么是卡特兰数,首先卡特兰数有一个很典型的应用就是求1~N个自然数出栈情况的种类数.而这里正好就对应了这种情况.我们要满足题目中给的条件,数字应该是从小到大放置的,1肯定在 ...

  9. HDU 3923 Invoker(polya定理+乘法逆元(扩展欧几里德+费马小定理))

    Invoker Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 122768/62768K (Java/Other) Total Subm ...

随机推荐

  1. JavaScript基础——使用运算符

    JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...

  2. Android界面性能调优手册

    界面是 Android 应用中直接影响用户体验最关键的部分.如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存. 我司这类做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户 ...

  3. jquery学习笔记-----插件开发的编写总结

    一.对jQuery对象的扩展 ;(function($){ $.fn.extend(  { fun1:abc,fun2:1bc … } ) })(jQuery) 这里采用立即执行模式,即不用调用也能执 ...

  4. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  5. php+jquery+ajax实现用户名验证

    大多数情况下,jquery代码的编写,都要求我们将jquery的代码放在以下三种中任一个function里. 有三种写法,同样效果,有点像Window.onload,但也有不同,就是window.on ...

  6. 用rlwrap使sqlplus可以上下翻页

    下载rlwrap-0.30 从光盘上安装readline-devel和readline 安装rlwrap: #tar -zxvf rlwrap-0.30.tar.gz#cd rlwrap-0.30#. ...

  7. Mac系统修改Intellij Idea默认JDK版本

    Intellij IDEA 默认情况下,使用的jdk的版本是1.6,当第一次启动IDEA的时候,如果系统中未安装jdk,则系统会自动到苹果官网下载jdk安装文件.如果你的系统已经安装了jdk1.7或是 ...

  8. android selector(转)

    Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:a ...

  9. MongoDB学习(2)—Node.js与MongoDB的基本连接示例

    前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务,在test数据库中插入一条实例数据: db. ...

  10. loj 1002(spfa变形)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25828 题意:求所有点到给定的目标顶点的路径上的权值的最大值的最小 ...