Sol

分情况讨论

  1. \(\lfloor\frac{a}{b}\rfloor+1\le \lceil\frac{c}{d}\rceil-1\)

    直接取 \(q=1,p=\lfloor\frac{a}{b}\rfloor+1\)
  2. \(a=0\)

    那么 \(q> \frac{pd}{c}\)

    直接取 \(p=1,q=\lfloor\frac{d}{c}\rfloor+1\)
  3. \(a<b\) 且 \(c\le d\)

    那么递归处理 \(\frac{d}{c} < \frac{q}{p} < \frac{b}{a}\)
  4. \(a\ge b\)

    那么递归处理 \(\frac{a~mod~b}{b} < \frac{p}{q}-\lfloor\frac{a}{b}\rfloor < \frac{c}{d}-\lfloor\frac{a}{b}\rfloor\)

形式上类似于欧几里得算法,把 \((a,b)\) 转化成 \((a~mod~b,b)\) 可能就是是类欧几里得算法的精髓

# include <bits/stdc++.h>
using namespace std;
typedef long long ll; inline ll Gcd(ll x, ll y) {
if (!x || !y) return x | y;
return !y ? x : Gcd(y, x % y);
} inline void Solve(ll a, ll b, ll c, ll d, ll &x, ll &y) {
register ll g = Gcd(a, b), nx, ny;
a /= g, b /= g, g = Gcd(c, d), c /= g, d /= g;
nx = a / b + 1, ny = c / d + (c % d > 0) - 1;
if (nx <= ny) x = nx, y = 1;
else if (!a) x = 1, y = d / c + 1;
else if (a < b && c <= d) Solve(d, c, b, a, y, x);
else Solve(a % b, b, c - d * (a / b), d, x, y), x += y * (a / b);
} ll a, b, c, d, x, y; int main() {
while (scanf("%lld%lld%lld%lld", &a, &b, &c, &d) != EOF) Solve(a, b, c, d, x, y), printf("%lld/%lld\n", x, y);
return 0;
}

BZOJ2187:fraction的更多相关文章

  1. OC基础11:基本的C语言特性2

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 19.定义一个int类型的指针: int ...

  2. OC基础6:多态、动态类型和动态绑定

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于SEL类型的数据: (1).SEL ...

  3. OC基础1:一些基本概念

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于类方法和实例方法: (1).类方法 ...

  4. 面向对象程序设计--Java语言第一周编程题:分数

    分数 题目内容: 设计一个表示分数的类Fraction.这个类用两个int类型的变量分别表示分子和分母. 这个类的构造函数是: Fraction(int a, int b) 构造一个a/b的分数. 这 ...

  5. Android注解使用之使用Support Annotations注解优化代码

    前言: 前面学习总结了Java注解的使用,博客地址详见Java学习之注解Annotation实现原理,从本质上了解到什么注解,以及注解怎么使用?不要看见使用注解就想到反射会影响性能之类,今天我们就来学 ...

  6. tn文本分析语言(二) 基本语法

    tn是desert和tan共同开发的一种用于匹配,转写和抽取文本的语言.解释器使用Python实现,代码不超过1000行. 本文主要介绍tn的基本语法.高级内容可以参考其他篇章.使用这样的语法,是为了 ...

  7. angularjs自带过滤器

    filter: filter过滤器第一个参数若是对象: <ul> <li ng-repeat="friend in friends | filter:{'name':'Jo ...

  8. objective-c第七章课后练习3

    题:Fraction类对负分数适用吗?例如:1/4-1/2 能否显示成-1/4? //--------类定义实现参考上篇随笔,此处需更改print方法和main主方法部分---------- - (v ...

  9. Python数据结构与算法--面向对象

    前面已经讲过,Python是一种面向对象的编程语言. 面向对象编程语言中最重要的特征是允许程序员创建类建立数据模型来解决问题. 我们之前利用抽象数据类型提供的逻辑来描述数据对象 (它的状态) 和功能 ...

随机推荐

  1. 3.1 High Availability

    摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...

  2. JavaIO系统

    为了方便记忆,特将IO中涉及的类进行整理如下: 1.File类 提供了目录操作,查看文件属性等. 2.java IO类层次 面向字节流的类为InputStream.OutputStream:面向字符流 ...

  3. LTE:EPC

    User Identifiers - IMSI and GUTI IMSI   A globle id that unique identifies a subscribe.It composed t ...

  4. anyncTask的3个参数(从源码可以发现其中使用了ThreadPoolExcuter线程池)

    AnyncTask异步处理数据并将数据应用到视图的操作场合 一  其中包含这几个方法 1 onPreExcute() 初始化控件,例如进度条2 doInBackground() 具体的执行动作请求数据 ...

  5. 终于解决了贴吧手机版的一个重大BUG

    终于解决了贴吧手机版的一个重大BUG 别诧异虽然同一个域名,但是,PC 和手机打开完全不一样的体验 http://tieba.yunxunmi.com/ 吃点夜校准备做梦去!! 发现 我云贴吧 一个  ...

  6. python-TCP传输模型

    #!/usr/bin/python #coding=utf-8 #服务器端 from socket import * from time import ctime HOST="192.168 ...

  7. CentOS/Linux 解决 SSH 连接慢

    现在连接linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢.经过网上资料查询,大致是有以下几种原因: 1 ...

  8. ../../build/debug/codegen/libCodeGen.a(llvm-codegen.cc.o ):( data.rel.ro_ZTIN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_6WeakVHENS_14ValueMapConfigIS3_EEEE[_ZTIN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_

    解决方式如下: wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz    tar xvzf llvm-3.2.src.tar.gz    cd ...

  9. subset II

    Subsets II Given a collection of integers that might contain duplicates, nums, return all possible s ...

  10. Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters--转

    https://github.com/elasticquent/Elasticquent/issues/53 the data is coming from a Mongo DB instance. ...