51 nod 1187 寻找分数
来源:互联网 发布:网络错误769怎么解决 编辑:程序博客网 时间:2024/06/07 03:47
题目
给出 a,b,c,d, 找一个分数p/q,使得a/b < p/q < c/d,并且q最小。例如:1/3同1/2之间,符合条件且分母最小的分数是2/5。(如果q相同,输出p最小的)
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行4个数,a,b,c,d,中间用空格分隔。(1 <= a,b,c,d <= 10^9)
Output
输出共T行,对应符合条件的分数。
Input示例
4
1 3 1 2
2 1 3 1
2 1 4 1
1000 1001 1001 1002
Output示例
2/5
5/2
3/1
2001/2003
分析
代码
#include <bits/stdc++.h>int a,b,c,d;long long p,q;void slove(int a,int b,int c,int d){ if (a == 0) { q = 1; p = floor(d / c) + 1; return; } if (a >= b) { slove(a % b,b,c - d * (a / b),d); q += (long long) p * (a / b); return; } if (c > d) { p = q = 1; return; } slove(d,c,b,a); std::swap(p,q);}int main(){ int T; scanf("%d",&T); while (T--) { scanf("%d%d%d%d",&a,&b,&c,&d); slove(a,b,c,d); printf("%lld/%lld\n",q,p); }}
0 0
- 【51Nod 1187】寻找分数
- 51 nod 1187 寻找分数
- [51nod1187]寻找分数
- 51 nod 1189 阶乘分数
- 51nod 1189 阶乘分数
- 【51Nod 1189】阶乘分数
- 51Nod-1189-阶乘分数
- 51nod 1189 阶乘分数
- 51nod 1189 阶乘分数
- 51Nod 1189 阶乘分数 (数论)
- [数论] 51Nod 1189 阶乘分数
- [51nod 1223]分数等式的数量
- 【51NOD 1223】分数等式的数量
- [51Nod 1223] 分数等式的数量
- [51Nod 1189阶乘分数]数学
- 51nod 1223 分数等式的数量
- 51nod 1223 分数等式的数量
- 51nod 1189 阶乘分数(阶乘素因子分解)
- IntelliJ IDEA 把Maven项目导出可执行jar包
- Java中的阻塞队列
- Netty 源码分析之 EventLoop(二) (最重要)
- 我为什么焦虑?
- Android开发笔记(一百零五)社会化分享SDK
- 51 nod 1187 寻找分数
- 字符串中的宏替换
- node监听流创建结束
- 删除已存在的SVN账户信息
- Android 自定义ScrollView实现拉下伸缩头部view
- Uva 1590 IP Networks
- ionic搭建android中遇到的编译问题
- C++ (1) 函数对象与谓词
- List of devices attached问题