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

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

输入:

数据的第一行是一个T,表示有T组数据。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。

输出:

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

样例:

题解:

已知 gcd ( B, 9973 ) = 1,n、B 的值都知道,且n = A % 9973,要求出 (A / B) % 9973 的值。由于不知道 A 的值,所以要把 A 值换掉。
设        ans = (A / B) % 9973;
则存在 X 使得:  A / B = 9973 * X + ans;
转换一下 得到 : A = 9973 * X * B + ans * B. // 式 1
又由于:    n = A % 9973.
则存在 Y 使得:  A = 9973 * Y + n. // 式 2
式 1 和 式 2 结合起来,就消去了 A ,再整理一下得到:
       n = ans * B + (B * X - Y) * 9973.
两边同时除以 n 得到 : 1 = (ans / n) * B + [ (B * X - Y) / n ] * 9973.
x = (ans / n) ,y = [ (B * X - Y) / n ],式子就变为:1 = x * B + y * 9973. 而 gcd( B, 9973) = 1,刚好符合扩展欧几里得算法求解。于是就可以求出 x 即 ans / n 的值,又 n 知道,就可以求出 ans 的值了。最后不要忘记 ans 要是个正数,要处理一下才行。既然最后结果是要 对 9973取模,那么可以对ans 这样操作取正:ans = (ans % mod + mod ) %mod.

参考代码:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;#define INF 0x3f3f3f
#define ll long long
#define clean(arrays) memset(arrays, 0, sizeof(arrays))const int MAX_NUM = 1e5 + 5;
const int mod = 9973;// 求解得到的 x 就是 a 的逆元,y 就是 b 的逆元。
ll exgcd(ll a, ll b, ll &x, ll &y)
{if(b == 0){x = 1;y = 0;return a;}ll r = exgcd(b, a % b, x, y);ll t = x;x = y;y = t - a / b * y;return r;
}int main()
{int t;cin >> t;while (t--){ll n;ll b;ll x, y;cin >> n >> b;exgcd(b, mod, x, y);x *= n;ll results = (mod + (x % mod)) % mod;   //对 x 值进行调整,避免是负数cout << results << endl;}
}

HDU-1567-A/B——算法笔记相关推荐

  1. 算法笔记--二分图判定

    算法笔记 挑战程序设计p98 #include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt ...

  2. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...

    来源:专知本文为资源,建议阅读5分钟本文为你分享<算法笔记>中文版. https://github.com/Dairongpeng/algorithm-note 目录概览 第一节 复杂度. ...

  3. 数据结构与算法笔记 - 绪论

    数据结构与算法笔记 - 绪论 1. 什么是计算 2. 评判DSA优劣的参照(直尺) 3. 度量DSA性能的尺度(刻度) 4. DSA的性能度量的方法 5. DSA性能的设计及其优化 x1. 理论模型与 ...

  4. 数据结构与算法笔记(十六)—— 二叉搜索树

    一.二叉搜索树定义 二叉搜索树(Binary Search Tree),又名二叉排序树(Binary Sort Tree). 二叉搜索树是具有有以下性质的二叉树: 若左子树不为空,则左子树上所有节点的 ...

  5. 数据结构与算法笔记(十五)—— 散列(哈希表)

    一.前沿 1.1.直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术.假设某应用要用到一个动态集合,其中每个元素都有一个取自全域U={0,1,-,m-1)的关键字,此处m是一个不很大 ...

  6. 《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  7. 【算法】《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  8. c++ string 删除字符_算法笔记|(5)第二章C、C++的快速入门字符数组的存放方式string.h文件...

    字符数组的存放方式 由于字符数组是由若干个char类型的元素组成的,因此字符数组的每一位都是一个char字符,除此之外,在一维字符数组或者二维字符数组的第二维的末尾都有一个空字符\0表示存放的字符串的 ...

  9. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  10. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

最新文章

  1. 50个顶级开源营销应用程序
  2. make 编译可执行
  3. java实现高斯赛德尔算法解线性方程组
  4. [译] Android 上一次编写,随处测试
  5. java scan hbase_hbase+java实例,Scan查询所有、get根据rowkey查询一行或一列数据
  6. python两大特性与四大语法_Day 1:Python 两大特性和四大基本语法
  7. 2017-7-18-每日博客-关于Linux下的通配符.doc
  8. iptables转发基础
  9. Windows中MySQL主从数据库搭建(三)
  10. mes系统服务器架构,MES系统三大层结构是什么
  11. 计算机usb接口无法充电,电脑可充电USB接口不能使用怎么办
  12. mac 设置网红屏保
  13. 什么是 Skype?
  14. [编程题] 头条校招
  15. 【OpenCV】 全景拼接——多张图像拼接
  16. 关于trunk的几个端口模式
  17. 这大概是你见过最全面的 Python 重点了
  18. IE浏览器-官网下载地址
  19. VS下glut freeglut GLtools glew等 配置教程
  20. 小程序、微信公众号调用监控摄像头直播开放接口文档

热门文章

  1. SQL service基础(二)对数据指定列查询、条件查询、查询结果排序、聚集函数查询、分组统计查询
  2. 每天劝你辞职的同事,反而是公司待最久的
  3. 妙啊!巧用 SSH 突破限制穿透内网
  4. java newline_Java BufferedWriter newLine()方法
  5. 微信小程序接收二进制流文件(图片预览,文件打开)
  6. webpack打包vue项目之后dist文件夹在本地跑起来
  7. three.js绘制墙体,通过不规则路径生成墙体,3D墙体绘制
  8. 如何优雅的创建一个Java不可变对象类,JDK源码中也是这么干的!
  9. Android旅游自助项目之订票系统订票功能实现
  10. java EE crm代码_基于jsp的小型企业CRM系统-JavaEE实现小型企业CRM系统 - java项目源码...