当前位置: 首页 > news >正文

hdu 1576扩展欧几里得算法

#include<stdio.h>
#define ll long long
/* 2.那么x,y的一组解就是x1*m1,y1*m1,但是由于满足方程的解无穷多个,
在实际的解题中一般都会去求解x或是y的最小正数的值。
以求x为例,又该如何求解呢?还是从方程入手,
现在的x,y已经满足a*x+b*y=m,那么a*(x+n*b)+b*(y-n*a)=m显然也是成立的。
可以得出x+n*b(n=…,-2,-1,0,1,2,…)就是方程的所有x解的集合,
由于每一个x都肯定有一个y和其对应,所以在求解x的时候可以不考虑y的取值。
取k使得x+k*b>0,x的最小正数值就应该是(x+k*b)%b,但是这个值真的是最小的吗??
如果我们将方程最有两边同时除以gcd(a,b),则方程变为a1*x+b1*y=m1,
同上面的分析可知,此时的最小值应该为(x+k*b1)%b1,由于b1<=b,所以这个值一定会小于等于之前的值。
在实际的求解过程中一般都是用while(x<0)x+=b1来使得为正的条件满足,为了更快的退出循环,
可以将b1改为b(b是b1的倍数),并将b乘以一个倍数后再加到x上。*/
ll x,y,q;
void extgcd(ll a,ll b) {
if(b==0) {
    x=1;y=0;q=a;
    return ;
}
extgcd(b,a%b);
ll temp=x;
x=y;y=temp-a/b*y;
return ;
}
int main() {
  ll n,t,b,k;
  scanf("%I64d",&t);
  while(t--) {
    scanf("%I64d%I64d",&n,&b);
    extgcd(b,9973);
    x=x*n/q;//
    k=9973/q;//
    x=(x%k+k)%k;//求最小的x
    printf("%I64d\n",x%9973);
  }
return 0;
}

转载于:https://www.cnblogs.com/thefirstfeeling/p/4410702.html

相关文章:

  • WCF入门教程:WCF基础知识问与答(转)
  • 《海量数据库解决方式》读后感
  • Winsock网络编程笔记(1)----入门
  • php中body下出现莫名空白字符
  • 关于ios 运行时 介绍的比较详细的帖子
  • IIS应用程序池监控
  • 理解 backbone.js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明...
  • 距离变换DT
  • 2-3. 逆序的三位数(10)
  • 发布/订阅消息传送模型
  • android 永不关闭toast
  • ZOJ 2770 Burn the Linked Camp(spfabellman)
  • Frontend Development
  • hdoj 1686 kmp
  • CCS教程
  • Angularjs之国际化
  • Date型的使用
  • ES6之路之模块详解
  • jdbc就是这么简单
  • PermissionScope Swift4 兼容问题
  • PHP 7 修改了什么呢 -- 2
  • Python学习笔记 字符串拼接
  • QQ浏览器x5内核的兼容性问题
  • quasar-framework cnodejs社区
  • spring cloud gateway 源码解析(4)跨域问题处理
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 反思总结然后整装待发
  • 浮现式设计
  • 前端相关框架总和
  • 微信小程序--------语音识别(前端自己也能玩)
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 在Unity中实现一个简单的消息管理器
  • No resource identifier found for attribute,RxJava之zip操作符
  • 仓管云——企业云erp功能有哪些?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 数据库巡检项
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #define与typedef区别
  • #HarmonyOS:基础语法
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (0)Nginx 功能特性
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (强烈推荐)移动端音视频从零到上手(下)
  • (推荐)叮当——中文语音对话机器人
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转) Face-Resources
  • (转)http协议
  • **PHP二维数组遍历时同时赋值