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. 任务调度SpringTask

    一.什么是任务调度 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作.常见的任务调度框架有Quartz和Spri ...

  2. 1059 C语言竞赛 (20 分)

    #include <iostream> #include <iomanip> #include <cmath> using namespace std; <& ...

  3. Django环境搭建之hello world

    当我们想用Python来开发一个web应用时,首先要选择一个优秀的web框架,Django是个非常成熟的web开发框架,网上具有丰富的文档和学习资料,所以选择Django框架来入门web开发是个不错的 ...

  4. 【算法笔记】A1047 Student List for Course

    https://pintia.cn/problem-sets/994805342720868352/problems/994805433955368960 题意 给出每个学生的选课情况,输出每节课选课 ...

  5. Maven 安装jar文件到本地repository

    Reference: https://maven.apache.org/general.html#importing-jars mvn install:install-file \ -Dfile=&l ...

  6. 认识CSS中字体图标

    前端之HTML,CSS(十一) 字体图标 使用文字做出小图标的效果并超越了小图标应用精灵图,使得图标变得灵活,减少了请求次数,优化了界面的性能.字体图标本身为矢量图. 字体图标的使用过程 1.UI设计 ...

  7. android:activity知识点

    一.活动流程 1.创建活动 public class firstActivity extends Activity{} 2.创建布局 新建first_layout.xml文件 3.注册活动 在andr ...

  8. e的理解

    1. e是一个重要的常数,但是我一直不知道,它的真正含义是什么. 它不像π.大家都知道,π代表了圆的周长与直径之比3.14159,可是如果我问你,e代表了什么.你能回答吗? 维基百科说: " ...

  9. Mac 10.12安装XMind

    下载: (链接: https://pan.baidu.com/s/1i4FmspJ 密码: ydc2)

  10. MongoDB的使用技巧(转)

    最近常用到mongo. 看朋友这篇命令挺全的就转来了. 如果想查看当前连接在哪个数据库 下面,可以直接输入db > db Admin 想切换到test数据库下面 > use test sw ...