SPOJ上的每个题目都做得我泪牛满面。

这个题目也是的。题目意思是给你两个分数a/b和c/d,要你求出一个分数p/q,使得a/b<p/q<c/d,且p最小。

看完题目后半天都没有任何思路哦。于是无奈只好去网上找题解咯。

终于找到一个神牛的题解,并且自己终于把那个东西给看懂了。

下面写下我自己的理解吧。

首先对于我们不要急于求分子,我们只要求出分母q,分子就可以直接用q*a/b+1表示了(想想为什么呢?因为要最小的)。

那么要求这个分母,首先把第一个分数变成0-1之间,即k=a/b,a-=b*k,同时第二个分数也要做相同的改变,c-=d*k;

这样不等式的方向都是没有变化的。这时候要是c/d>1,也就是说c>d,那么就说明p/q=1;

否则我们可以把这个不等式式同时取倒数变为 d/c<q/p<b/a, 这时候我们可以再次递归求解p哦,有了p,q=p*d/c+1;

恩大概就是这样,具体的证明我也无法给出,好好理解一下吧。

 #include <iostream>
using namespace std;
typedef long long ll; ll dfs(ll a,ll b,ll c,ll d)
{
ll k=a/b;
a-=b*k,c-=d*k;
if (c>d) return ;
return dfs( d,c,b,a)*d/c+;
} int main()
{
ll a,b,c,d,p,q;
while (cin>>a>>b>>c>>d)
{
q=dfs(a,b,c,d);
p=q*a/b+;
cout<<p<<'/'<<q<<endl;
}
return ;
}

SPOJ3899——Finding Fractions的更多相关文章

  1. SPOJ 3899. Finding Fractions 连分数

    连分数乱搞,我反正是一眼没看出结果 某巨巨把这题讲解的比较详细 : http://blog.csdn.net/gogdizzy/article/details/8727386 令k = [a/b] 然 ...

  2. 每日英语:Why Are Fractions Key To Future Math Success?

    Many students cruise along just fine in math until fourth grade or so. Then, they hit a wall -- frac ...

  3. Codeforces Round #384 (Div. 2) C. Vladik and fractions(构造题)

    传送门 Description Vladik and Chloe decided to determine who of them is better at math. Vladik claimed ...

  4. hdu-5992 Finding Hotels(kd-tree)

    题目链接: Finding Hotels Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 102400/102400 K (Java/ ...

  5. Codeforces Round #232 (Div. 2) D. On Sum of Fractions

    D. On Sum of Fractions Let's assume that v(n) is the largest prime number, that does not exceed n; u ...

  6. 模拟 --- hdu 12878 : Fun With Fractions

    Fun With Fractions Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit ...

  7. [转] Finding the Best Programmer's Font

    原文 Finding the Best Programmer's Font

  8. Octal Fractions

    Octal Fractions Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 149  Solved: 98 Description Fractions ...

  9. Poj1131-Octal Fractions

    Octal Fractions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6669   Accepted: 3641 D ...

随机推荐

  1. # 2017-2018-1 20155337《信息安全系统设计基础》第5周学习总结+mybash

    2017-2018-1 20155337<信息安全系统设计基础>第5周学习总结 教材学习内容总结 不论我们是在用C语言还是用JAVA或是其他的语言编程时,我们会被屏蔽了程序的机器级的实现. ...

  2. mfc通过MapWinGIS控件读取shp文件(不通过#import实现)

    1.首先注册MapWinGIS ActiveX组件, 引入MapWinGIS.ocx产生的MapWinGIS_i.h和MapWinGIS_i.c文件,利用CoCreateInstance函数来调用 演 ...

  3. 2.Rest Server提供数据库的Json字符串

    Delphi最大的特点是数据库操作便捷.为了能够给App提供数据,这里采用Rest Server后台,然后在用Json文件发送到APP前台. 1.后台的dataset转换为json. 这里百度后就可以 ...

  4. SRM 563 500pts SpellCards

    SpellCards 题意: 有n张符卡排成一个队列,每张符卡有两个属性,等级li和伤害di. 两种操作: 1.把队首的符卡移动到队尾:2.使用队首的符卡,对敌人造成di点伤害,并丢弃队首的li张符卡 ...

  5. [IOI2011]Race 点分治

    [IOI2011]Race LG传送门 点分治板子题. 直接点分治统计,统计的时候开个桶维护下就好了. 注(tiao)意(le)细(hen)节(jiu). #include<cstdio> ...

  6. 验证码示例代码演示——以php为例

    运行 · 修改index.php(图片验证码的生成示例) [html] view plain copy initNECaptcha({ captchaId: 'YOUR_CAPTCHA_ID', // ...

  7. scala : 类型与类

    scala类型系统:1) 类型与类 在Java里,一直到jdk1.5之前,我们说一个对象的类型(type),都与它的class是一一映射的,通过获取它们的class对象,比如 String.class ...

  8. Android开发笔记——视频录制播放常见问题

    本文分享自己在视频录制播放过程中遇到的一些问题,主要包括: 视频录制流程 视频预览及SurfaceHolder 视频清晰度及文件大小 视频文件旋转 一.视频录制流程 以微信为例,其录制触发为按下(住) ...

  9. JavaWeb(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  10. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...