参考博客:zro https://blog.csdn.net/alusang/article/details/81840944 orz

给你一个分母 m 和一个浮点数 x,让你求出一个分母不超过 m 的分数值最接近 x 的分数。

最终答案要求是最简分数。

数学上,n阶的法里数列是0和1之间最简分数的数列,由小至大排列,每个分数的分母不大于n。

法里数列的排列如上图。两个法里数中间的数字 = 分子的和 / 分母的和

所以可以二分找最接近给出的浮点数的法里数。

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int t;
scanf("%d", &t);
for (int ca = ; ca <= t; ca++)
{
int id, m;
double x;
scanf("%d%d%lf", &id, &m, &x); int a, b, c, d;
a = , b = c = d = ;
while()
{
int fz = a+c, fm = b+d;
int g = __gcd(fz, fm); fz /= g, fm /= g;
if (fm > m) break; if (1.0*fz/fm < x) a = fz, b = fm;
else c = fz, d = fm;
} printf("%d ", id);
if (fabs(1.0*a/b-x) > fabs(1.0*c/d-x)) printf("%d/%d\n", c, d);
else printf("%d/%d\n", a, b);
}
}

UVALive - 8292 (法里数列)的更多相关文章

  1. Stern-Brocot树 及 法里级数分析

    Stern-Brocot树产生了所有分子分母互素的分数 从初始0/1 1/0 -> m/n m'/n'出发,不断往中间添加 (m+m')/(n+n')容易推得 n * m' - m * n' = ...

  2. MT【312】特征根法求数列通项

    (2016清华自招领军计划37题改编) 设数列$\{a_n\}$满足$a_1=5,a_2=13,a_{n+2}=\dfrac{a^2_{n+1}+6^n}{a_n}$则下面不正确的是(      )A ...

  3. UVaLive 3357 Pinary (Fib数列+递归)

    题意:求第 k 个不含前导 0 和连续 1 的二进制串. 析:1,10,100,101,1000,...很容易发现长度为 i 的二进制串的个数正好就是Fib数列的第 i 个数,因为第 i 个也有子问题 ...

  4. 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】

    链接:https://www.nowcoder.com/acm/contest/121/J来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的小 ...

  5. HDU1695 GCD (欧拉函数+容斥原理)

    F - GCD Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  6. Farey sequences

    n阶的法里数列是0和1之间最简分数的数列,由小至大排列,每个分数的分母不大于n. Stern-Brocot树(SB Tree)可以生成这个序列 {0/1,1/1} {0/1,1/2,1/1} {0/1 ...

  7. 高级设计总监的设计方法论——5W1H需求分析法 KANO模型分析法

    本期开始进入设计方法论的学习,大湿自己也是边学边分享,算是巩固一遍吧: 另外这些理论基本都是交叉结合来应用于工作中,我们学习理论但不要拘泥于理论的框架中,掌握后要灵活运用一点- 这些理论一部分来自于我 ...

  8. [POJ1845&POJ1061]扩展欧几里得应用两例

    扩展欧几里得是用于求解不定方程.线性同余方程和乘法逆元的常用算法. 下面是代码: function Euclid(a,b:int64;var x,y:int64):int64; var t:int64 ...

  9. php弱语言特性-计算科学计数法

    php处理字符串时存在一个缺陷问题,如果字符串为“1e1”,本该是一个正常的字符串,但是php会将它认为是科学计数法里面的e: 也就是按照数学的科学计数法来说:1e1=10^1=10,因此php会把这 ...

随机推荐

  1. c++笔记2

    一 继承和多态.虚函数:类不必重复造轮子,可以从其它基类派生而来(多重继承(由多个基类的特点)和虚拟继承(基类的一些特性在继承之间共享)).派生类需要在自己的头文件中包含基类头文件,切派生类声明要指明 ...

  2. HDU 1069 Monkey and Banana DP LIS变形题

    http://acm.hdu.edu.cn/showproblem.php?pid=1069 意思就是给定n种箱子,每种箱子都有无限个,每种箱子都是有三个参数(x, y, z)来确定. 你可以选任意两 ...

  3. 详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了....

    一 看Think in Java,遇到个程序 class Egg2 { protected class Yolk { public Yolk() { System.out.println(" ...

  4. 写TXT文件

    #region 写日志 private static void writelog(string strwrite) { string strPath = "d:/log.txt"; ...

  5. Unity3d网格合并

    几个不同的物体,在Unity3d中可以将网格合并在一起,用于优化. 在Unity3d中构建临时场景如下:建一C#脚本名为"CombineMeshes",挂在Cube上. Combi ...

  6. Android仿360悬浮小球自定义view实现

    转载请标明出处:http://www.jianshu.com/u/a5ad093cffe8 效果图如下: 图片.png   图片.png 实现当前这种类似的效果 (360小球 悬浮桌面差不错类似).第 ...

  7. Postgres 9.11 网络地址类型函数和操作符

    9.11. 网络地址类型函数和操作符 Table 9-31 显示了可以用于 cidr 和 inet 的操作符. 操作符 <<,<<= >>,和 >>= ...

  8. jsp另外五大内置对象之response-设置头信息

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  9. 微软分布式机器学习工具包DMTK——初窥门径

    在现在机器学习如日中天的大背景下,微软亚洲研究院的实习岗位中,机器学习组的工作也是维护DMTK,参与算法改进,那么在此之前我们得了解DMTK是个啥. DMTK由一个服务于分布式机器学习的框架和一组分布 ...

  10. 让您的Eclipse具有千变万化的外观

    大家每天用Eclipse做Java开发,是否厌倦了Eclipse千篇一律的白色背景呢? 看看Jerry这几种不同风格的Eclipse外观,是不是有耳目一新的感觉?如何做到的? 需要给Eclipse安装 ...