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

题意为求最小的b满足$a*b^{-1}\equiv x(modp)$.

把式子化简一下:

$a\equiv b*x(modp)$

$a=b*x-p*y$

$\because 0<a<b$

$\therefore 0<b*x-p*y<b$

$0<b*x-p*y\Rightarrow \frac{p}{x}<\frac{b}{y}$

$b*x-p*y<b\Rightarrow \frac{b}{y}<\frac{p}{x-1}$

$\therefore \frac{p}{x}<\frac{b}{y}<\frac{p}{x-1}$

这样题目就转化成求最小的b,y满足上式。

如果当前$[\frac{p}{x},\frac{p}{x-1}]$之间有整数,则$b=\left \lfloor \frac{p}{x} \right \rfloor+1,y=1$。

如果没有则可以辗转相除来递归求解。

例如:p=11,x=7。

$\frac{11}{7}<\frac{b}{y}<\frac{11}{6}$

则化为真分数后在求倒数。

$\frac{6}{5}<\frac{y}{b-y}<\frac{7}{4}$

再次化为真分数后求倒数。

$\frac{4}{3}<\frac{b-y}{2*y-b}<5$

此时[4/3,5]内有整数,则回溯得到答案。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 #include<queue>
 7 using namespace std;
 8 typedef long long ll;
 9 void f(ll a, ll b, ll c, ll d, ll& x, ll& y){
10     ll q = a / b + 1;
11     if (q <= c / d){
12         x = q;
13         y = 1;
14         return;
15     }
16     q--;
17     a -= q * b; c -= q * d;
18     f(d, c, b, a, y, x);
19     x += q * y;
20     return;
21 }
22 int main(){
23     int t;
24     scanf("%d", &t);
25     while (t--){
26         ll b, y, a, p, x;
27         scanf("%lld%lld", &p, &x);
28         f(p, x, p, x - 1, b, y);
29         a = b * x - y * p;
30         printf("%lld/%lld\n", a, b);
31     }
32     return 0;
33 }

转载于:https://www.cnblogs.com/sainsist/p/11372765.html

[2019杭电多校第五场][hdu6624]fraction相关推荐

  1. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  2. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  3. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  4. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  5. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  6. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  7. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

  8. 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...

  9. 2019杭电多校第七场 HDU - 6656 Kejin Player 期望

    题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...

  10. 2019杭电多校第七场 HDU - 6656 Kejin Player——概率期望

    题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...

最新文章

  1. java绘等高线图_Matplotlib中的极坐标等高线图
  2. jdk动态代理实例和cglib动态代理实例_CGLib 动态代理 原理解析
  3. Cheetah 15K.7 ST3600057SS读写慢
  4. php外部系统命令执行函数
  5. 【专升本计算机】甘肃省专升本计算机C语言经典程序案例代码合集(持续更新)
  6. php真随机数,php 的伪随机数与真随机数实例详解
  7. STL14-set/multiset容器
  8. 用 js 写的 WebSocketHeartBeat,心跳检测,断线重连
  9. 工作记录--------unbuntu20搭建微信和Foxmail
  10. 某班30名同学成绩c语言,.编程实现:求某班30个同学的所有成绩,并统计出其平均分,最高分和最低分。...
  11. 其实你孤独的像一只流浪狗
  12. 中小企业国际市场营销策略研究
  13. 微信小程序获取当前日期和时间
  14. java任意键继续_java 按任意键继续怎么写
  15. MySQL的多表查询
  16. 低代码数字孪生平台,魅力何在?
  17. NCP1342芯片替代料PN8213 65W氮化镓充电器方案
  18. 推荐假期看的几部黑客电影
  19. python商品打折问题公式_python障碍式期权定价公式
  20. ROS(机器人操作系统)在国内前景如何?

热门文章

  1. 转 黑客帝国解读 Matrix的世界
  2. C#- XPath教程
  3. 30本数据分析的书籍送给你!
  4. sqldf包:让SQL语句在R语言中执行
  5. corrplot包与ggcorrplot相关图(二)
  6. R语言构建RFM模型了解一下~~~
  7. 银行剧震!国内第一家无人银行来了...
  8. 在 windows 上安装免安装版的mysql
  9. shell脚本基础 循环机构
  10. Eclipse 导入项目与 svn 插件关联全过程记录