Best Rational Approximation ——二分

许多微控制器没有浮点单元,但确实有一个(合理)快速整数除法单元。在这些情况下,使用有理值来近似浮点常数可能是值得的.
例如,355/113 = 3.1415929203539823008849557522124 是 π = 3.14159265358979323846 一个很好的近似值.
最佳有理近似 p/q到实数 x 最多有分母 M 是一个有理数 p/q(最低限度) 跟 q≤M这样, 对于任何整数 a和 b ≤M , a 和 b 互素 , p/q 至少与 a/b 一样接近 x : |x – p/q|≤|x – a/b|.
编写程序来计算最佳有理近似 到一个实数 x  , 最多有分母 M.

(题目大意) 在给定范围内找到两个数,使其相除后的商最接近给定的小数

输入
第一行输入包含一个整数 P (1≤P≤1000),即后面的数据集数。每个数据集都应以相同且独立的方式进行处理。
每个数据集都由一行输入组成。它包含数据集编号 K,后跟最大分母值 M (15≤M≤100000),后跟浮点值 x(0≤x < 1)。

输出
对于每个数据集,都有一行输出。单行输出线由数据集编号 K 组成,后跟一个空格,后跟 x 的最佳有理近似分子 p,后跟正斜杠 (/),后跟 x 的最佳有理近似分母 q。

Input
3
1 100000 0.141592653589793238
2 255 0.141592653589793238
3 15 0.141592653589793238

Output
1 14093/99532
2 16/113
3 1/7

解析:

Stern–Brocot 树

从第1行到第n行,每行相邻两数a/b和c/d,产生中间数(a+c)/(b+d),置于下一行中,
其中真分数 (左边),叫法里数列(Farey 数列)

法里数列 在每层中单调递增(易证) 并且具有最简性(也就是分子和分母互质), 这样就可以通过二分的方法来找到最佳有理近似p/q ——另类的二分

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const int N=2e6+10;
double p;
int t,k,m;
signed main()
{ios;cin>>t;while(t--){cin>>k>>m>>p;int a=0,b=1,c=1,d=1;int x,y;while (1){x=a+c;y=b+d;if (y>m) break; if (1.0*x/y<=p)    {a=x;b=y;}else{c=x;d=y;}}cout<<k<<" ";if (fabs(1.0*a/b-p)>fabs(1.0*c/d-p)){cout<<c<<"/"<<d<<endl;}else cout<<a<<"/"<<b<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/208664.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法

文章目录 .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法详细报错内容解决方案修改数据修改表修改字段 .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法 详细报错内容 System.NotSupportedException…

2024年美国大学生数学建模竞赛(MCM/ICM)论文写作方法指导

一、前言 谈笑有鸿儒&#xff0c;往来无白丁。鸟宿池边树&#xff0c;僧敲月下门。士为知己者死&#xff0c;女为悦己者容。吴楚东南坼&#xff0c;乾坤日夜浮。剪不断&#xff0c;理还乱&#xff0c;是离愁&#xff0c;别是一番滋味在心头。 重要提示&#xff1a;优秀论文的解…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗? 我本来以为是 IDEA 版本更新导致的 Bug&#xff0c;开始还没在意。 直到我今天自己初始化项目时才发现&…

免费文章采集工具使用,批量文章自动伪原创工具

在互联网的浩瀚海洋中&#xff0c;获取高质量原创文章是网站生存与发展的关键。而文章采集工具应运而生&#xff0c;成为许多创作者和站长的得力助手。正是这些工具的出现&#xff0c;让文章采集变得更加便捷高效。 免费文章采集工具 免费的文章采集工具。这些工具通常提供基…

可用的镜像 yum 源

目录 ftp.sjtu.edu.cn 镜像 yum 源centos 的镜像 yum 源 mirrors.sohu.comcentos 的镜像 yum 源 mirrors.163.comcentos 的镜像 yum 源 ftp.sjtu.edu.cn 镜像 yum 源 镜像 yum 源地址 &#xff1a; http://ftp.sjtu.edu.cn/centos/ centos 的镜像 yum 源 http://ftp.sjtu.edu…

Qt 网络通信

获取本机网络信息 &#xff08;1&#xff09;在 .pro 文件中加入 QT network&#xff08;2&#xff09; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QLabel> #include <QLineEdit> #include <QPu…

QT学习_16_制作软件安装包

1、准备软件exe及其运行环境 参考&#xff1a;Qt学习_12_一键生成安装包_江湖上都叫我秋博的博客-CSDN博客 这篇博客记录了&#xff0c;如何用window的脚本&#xff0c;一键生成一个可以免安装的软件压缩包&#xff0c;解压缩后&#xff0c;点击exe文件就可以直接运行。 这一…

4个解决特定的任务的Pandas高效代码

在本文中&#xff0c;我将分享4个在一行代码中完成的Pandas操作。这些操作可以有效地解决特定的任务&#xff0c;并以一种好的方式给出结果。 从列表中创建字典 我有一份商品清单&#xff0c;我想看看它们的分布情况。更具体地说&#xff1a;希望得到唯一值以及它们在列表中出…

zookeeper集群+kafka集群

Kafka3.0之前依赖于zookeeper Zookeeper开源&#xff0c;分布式的架构&#xff0c;提供协调服务&#xff08;apache项目&#xff09; 基于观察者模式设计的分布式服务管理架构 存储和管理数据&#xff0c;分布式节点上的服务接受观察者的注册&#xff0c;一旦分布式节点上的数据…

禁止谷歌浏览器自动更新

禁止谷歌浏览器自动更新 在使用Python包selenium的时候浏览器版版本发生变化后产生很多问题如&#xff1a; 1、直接版本不对应无法运行 2、版本不一致导致debug启动浏览器超级慢 这里是已谷歌浏览器为代表的。 禁止自动更新的方法如下&#xff1a; 1、WinR调出运行&#x…

threadlocal - 黑马程序员

目录 1、ThreadLocal介绍1.2 ThreadLocal基本使用1.2.1、常用方法1.2.2 使用案例 1.3 ThreadLocal类与synchronized关键字 2、运用场景_事务案例3、ThreadLocal的内部结构4、 ThreadLocal的核心方法源码5、ThreadLocalMap源码分析5.2 弱引用和内存泄漏 课程地址&#xff1a; ht…

深度学习记录--logistic回归损失函数向量化实现

前言 再次明确向量化的目的&#xff1a;减少for循环的使用&#xff0c;以更少的代码量和更快的速度来实现程序 正向传播的向量化 对于,用向量化来实现&#xff0c;只需要就可以完成&#xff0c;其中,, ps.这里b只是一个常数&#xff0c;但是依然可以加在每个向量里(python的…

洛谷 P1379:八数码难题 ← BFS+unordered_map(哈希表)

【题目来源】https://www.luogu.com.cn/problem/P1379【题目描述】 在 33 的棋盘上&#xff0c;摆有八个棋子&#xff0c;每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格&#xff0c;空格用 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是&#xff1a;给出一…

PTA结构体经典编程题

目录 第一题&#xff1a;计算平均成绩 第二题&#xff1a;平面向量加法 第三题&#xff1a;查找书籍 第四题&#xff1a;通讯录排序 第五题&#xff1a;计算职工工资 第一题&#xff1a;计算平均成绩 思路&#xff1a;看到一个学生的基本信息&#xff0c;所以定义一个结构…

Golang 原生Rpc Server实现

Golang 原生Rpc Server实现 引言源码解析服务端数据结构服务注册请求处理 客户端数据结构建立连接请求调用 延伸异步调用定制服务名采用TPC协议建立连接自定义编码格式自定义服务器 参考 引言 本文我们来看看golang原生rpc库的实现 , 首先来看一下golang rpc库的demo案例: 服…

AI创作ChatGPT源码+AI绘画(Midjourney绘画)+DALL-E3文生图+思维导图生成

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

etlbox.3.1.0 for NET 轻量级 ETL数据集成库 Crack

适用于 .NET 的轻量级 ETL&#xff08;提取、转换、加载&#xff09;工具箱和数据集成库 高度可定制 厌倦了使用几乎不可能实现复杂需求的用户界面&#xff1f;使用 ETLBox&#xff0c;可以轻松编写适合您独特需求的代码。插入您自己的逻辑或修改现有行为以满足您的特定要求。 …

打造个性化github主页 一

文章目录 概述创建仓库静态美化GitHub 统计信息卡仓库 GitHub 额外图钉仓库 热门语言卡仓库 GitHub 资料奖杯仓库 GitHub 活动统计图仓库 打字特效添加中文网站统计仓库 总结 概述 github作为全球最大的代码托管平台&#xff0c;作为程序员都多多少少&#xff0c;都使用过他。…

盘点25个Html游戏Game源码网页爱好者不容错过

盘点25个Html游戏Game源码网页爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 下载链接&#xff1a;https://pan.baidu.com/s/1lSNLjWB4xMuLV8m_kDtczw?pwd6666 提取码&#xff1a;6666 项目名称 21点游戏 H5…

随手写了个博客多平台发布脚本:Python自动发布文章到Wordpress

​ 引言 作为一名技术博主&#xff0c;提高博客发布效率是我们始终追求的目标。在这篇文章中&#xff0c;我将分享一个基于Python的脚本&#xff0c;能够实现博客多平台发布&#xff0c;具体来说&#xff0c;是自动发布文章到WordPress。通过这个简单而高效的脚本&#xff0c…