[2019杭电多校第五场][hdu6624]fraction
题目链接: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相关推荐
- 2019杭电多校 第七场 Kejin Player 6656(求期望值)
2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...
- 2019杭电多校第9场1002 Rikka with Cake HDU6681
2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...
- 【2019.08.21】2019杭电多校第十场
补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...
- 2019 杭电多校第六场 题解
比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...
- 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)
Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...
- 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)
题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...
- hdu 6656 2019杭电多校第7场 期望题
设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...
- 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player 期望
题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player——概率期望
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...
最新文章
- java绘等高线图_Matplotlib中的极坐标等高线图
- jdk动态代理实例和cglib动态代理实例_CGLib 动态代理 原理解析
- Cheetah 15K.7 ST3600057SS读写慢
- php外部系统命令执行函数
- 【专升本计算机】甘肃省专升本计算机C语言经典程序案例代码合集(持续更新)
- php真随机数,php 的伪随机数与真随机数实例详解
- STL14-set/multiset容器
- 用 js 写的 WebSocketHeartBeat,心跳检测,断线重连
- 工作记录--------unbuntu20搭建微信和Foxmail
- 某班30名同学成绩c语言,.编程实现:求某班30个同学的所有成绩,并统计出其平均分,最高分和最低分。...
- 其实你孤独的像一只流浪狗
- 中小企业国际市场营销策略研究
- 微信小程序获取当前日期和时间
- java任意键继续_java 按任意键继续怎么写
- MySQL的多表查询
- 低代码数字孪生平台,魅力何在?
- NCP1342芯片替代料PN8213 65W氮化镓充电器方案
- 推荐假期看的几部黑客电影
- python商品打折问题公式_python障碍式期权定价公式
- ROS(机器人操作系统)在国内前景如何?