博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hdu 1576 A/B 扩展欧几里得
阅读量:3904 次
发布时间:2019-05-23

本文共 960 字,大约阅读时间需要 3 分钟。

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

设结果为k,则k=(A/B)%9973;

A/B=9973m+k;

A=B*k+9973*m*B;

因为:A%9973=n

所以:

n=(B*k+9973*m*B)%9973;

n%9973=k*B%9973.

k*B+9973y=n;

然后下面就是扩展欧几里得...

代码如下:

 

#include 
#include
#include
#include
using namespace std;typedef long long ll;const long long Mod=9973;int t;ll n,b;void Extend (ll A,ll B, ll& X,ll& Y){ if(B==0) { X=1; Y=0; return; } else { ll ans,temp; Extend(B,A%B,X,Y); temp=X; X=Y; Y=temp-A/B*Y; }}int main(){ scanf("%d",&t); while (t--) { scanf("%lld%lld",&n,&b); ll x,y; Extend(b,Mod,x,y); x=x*n; x=(x%Mod+Mod)%Mod; printf("%lld\n",x); } return 0;}

 

转载地址:http://vaaen.baihongyu.com/

你可能感兴趣的文章
PID调节经验
查看>>
机器学习经典书籍
查看>>
Latex排版全解
查看>>
2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
查看>>
北航王田苗教授:国内外机器人发展热点与趋势(精华版)
查看>>
windows常用软件收集
查看>>
Markdown语法注意借鉴
查看>>
Java 容器Collection(5)
查看>>
Java IO操作(6)
查看>>
Java数组(3)
查看>>
Java线程(7)
查看>>
Java GUI基础(9)
查看>>
Java网络基础(8)
查看>>
Java_正则表达式
查看>>
如何通俗地解释 PID 参数整定?
查看>>
简单滤波算法的资料
查看>>
在Eclipse中使用JUnit4进行单元测试(中级篇)
查看>>
在Eclipse中使用JUnit4进行单元测试(高级篇)
查看>>
Java进阶之----LinkedList源码分析
查看>>
Java设计模式--责任链模式(Chain of Responsibility)
查看>>