codeforces B. Routine Problem 解题报告
题目链接:http://codeforces.com/problemset/problem/337/B
看到这个题目,觉得特别有意思,因为有熟悉的图片(看过的一部电影)。接着让我很意外的是,在纸上比划了一下,凭着直觉,竟然一次AC,那个兴奋啊 !^_^ ! 好啦,不说废话。
这个题目被分类为 math 和 matrices ,数学还好理解,matrices,应该是母函数吧(不好意思的说,还没系统地学到),姑且让我分类到数学里吧。题目的意思是,给出一个水平长度 : 垂直长度的比例分别为 a:b 的 monitor 屏幕和 c:d 的 movie 框架,要求算出 movie 框架嵌入monitor屏幕后空出的部分,要求用最简分数表示。
从 Sample 可以看出,a/b 和 c/d 有三种关系:a/b > c/d, a/b < c/d, a/b = c/d(当然,可以把 a/b = c/d 这种情况纳入 > 或者 < 当中,此时就只有两种关系了)。
我的做法就是先判断给出的 a/b 和 c/d 究竟属于哪种关系,然后小的那个分数就除以大的那个分数,结果可能不会是最简分数,然后分子分母同时除以最大公约数,最后用 1 减去化简后的分数即是结果。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std; int gcd(int x, int y)
{
while (x != y)
{
if (x > y)
x = x - y;
else
y = y - x;
}
return x;
} int main()
{
int a, b, c, d, k, t3, t4;
double t1, t2;
while (scanf("%d%d%d%d", &a, &b, &c, &d) != EOF)
{
t1 = (double)a /(double)b; // 强制类型转换成浮点数,方便比较 a/b和 c/d 的大小
t2 = (double)c /(double)d;
// cout << "t1 = " << t1 << endl;
// cout << "t2 = " << t2 << endl;
if (t1 > t2) // a/b > c/d,则得出的结果是(b*c) / (a*d)
{
t3 = b * c; // t3保存分子
t4 = a * d; // t4保存分母
}
else
{
t3 = a * d;
t4 = b * c;
}
k = gcd(t3, t4);
t3 = t3 / k; // 得到约去最大公约数的分子
t4 = t4 / k; // 得到约去最大公约数的分母
cout << t4 - t3 << "/" << t4 << endl; // 实质上是1 - t3/t4,由于t3、t4在上一步中已经为最简,因此 (t4-t3) / t4 不需要再判断是否为最简分数
}
return ;
}
codeforces B. Routine Problem 解题报告的更多相关文章
- Codeforces Round 665 赛后解题报告(暂A-D)
Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...
- Codeforces Round 662 赛后解题报告(A-E2)
Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...
- codeforces B. Simple Molecules 解题报告
题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...
- codeforces 591A. Wizards' Duel 解题报告
题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...
- codeforces 582A. GCD Table 解题报告
题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...
- codeforces 581C. Developing Skills 解题报告
题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...
- codeforces 577B. Modulo Sum 解题报告
题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ...
- codeforces 540B.School Marks 解题报告
题目链接:http://codeforces.com/problemset/problem/540/B 题目意思:给出 k 个test的成绩,要凑剩下的 n-k个test的成绩,使得最终的n个test ...
- codeforces 507B. Painting Pebbles 解题报告
题目链接:http://codeforces.com/problemset/problem/509/B 题目意思:有 n 个piles,第 i 个 piles有 ai 个pebbles,用 k 种颜色 ...
随机推荐
- 超级懒汉编写的基于.NET的微信SDK
一.前言 特别不喜欢麻烦的一个人,最近碰到了微信开发.下载下来了一些其他人写的微信开发“框架”,但是被恶心到了,实现的太臃肿啦. 最不喜欢的就是把微信返回的xml消息在组装成实体类,所以会比较臃肿,现 ...
- Escape Sequences
(这篇随笔是 C++ Primer 5th ed. pp.39-40的摘录) Some characters, such as backspace or control characters, hav ...
- easyui datagrid 获取 title
function exportExecl(obj) { var cfs = $(obj).datagrid('getColumnFields'); //这是获取到所有的Fields //得到title ...
- [Angularjs]ng-show和ng-hide
写在前面 上篇文章介绍了ng-select和ng-options指令的使用,这篇文章继续指令的学习,本篇文章讲学习ng-show和ng-hide指令. 系列文章 [Angularjs]ng-selec ...
- 初学Hibernate之Query扩展
1.hql参数化查询,不明确值类型的用setParameter方法:明确查询结果为一条记录的用uniqueResult方法查询 注意,参数化查询中方法setString 或 setParameter如 ...
- MySQL的left join中on与where的区别
关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行,即使on中包含有A表中的列 ...
- ASP.NET MVC 数据分页
作为一个菜鸟级的程序猿,总结一下学到的两种数据分页. 1.真分页 真分页就是需要时从数据库里读出需要多的数据,利用存储过程可实现.网上的分页SQL特别多,数据库自带的一些方法也可方便的帮助分页,但是我 ...
- tar 的一个记录
今天看到群里有人在问.用tar命令备份/etc/passwd 文件提示删除/的提示 这里我要说明下,tar的打包压缩 命令: tar -zcv -f /backup/passwd.tar.gz /et ...
- Json数据
<title>无标题文档</title>//使用 jquery 必须的先加载 <script src="jquery-2.1.1.min.js"> ...
- HDU 1062 Text Reverse(水题,字符串处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1062 解题报告:注意一行的末尾可能是空格,还有记得getchar()吃回车符. #include< ...