description |
Veda 在用宽高比为a:b的显示器看一部宽高比为c:d的电影。在使用全屏模式看电影时,如果这个比例不相同,
那么在显示器上就会出现了一些没有画面的地方,我们暂且称之为“黑屏”(全屏放大为等比放大,并且不旋转电影)。
那么问题来了,这些“黑屏”占屏幕的最小比例是多少? |
input |
每行四个空格隔开的整数a,b,c,d( 0 <= a,b,c,d <= 1000) |
output |
“黑屏”的最小占比(分数表示) |
sample_input |
1 1 3 2
3 4 2 3 |
sample_output |
1/3
1/9
题解:这是一道简单的数学题,需要注意的就是结尾处需要分数化简以及“0/1”这个情况的处理;
code:
#include <cstdio>
#include <iostream>
using namespace std;
int gcd(int a,int b)//递归方法的最大公倍数求法,用来约分分数
{
return b?gcd(b,a%b):a;
}
int main()
{
int a,b,c,d;
while(cin>>a>>b>>c>>d)
{
int ad=a*d;//将分数化为同底的两个分数,直接用一个分数的分子乘以另一个分数的分母就行了
int bc=b*c;
int cha;//两个分数的分子的差值
int fm;//两个分子中大的一个作为答案的分母
if(ad>bc)//三个判断语句分别比较ad和bc的大小
{
cha=ad-bc;
fm=ad;
}
else if(ad==bc)//特殊情况的处理
{
printf("0/1\n");
continue;//直接跳回循环的初始位置重新进行循环
}
else
{
cha=bc-ad;
fm=bc;
}
int gc=gcd(cha,fm);//求最大公约数
printf("%d/%d\n",cha/gc,fm/gc);//分数化简的同时出结果
}
return 0;
}
补充:
0/1 这个情况不处理可能会出现WA或者FPE;
|
nefuoj-943:黑屏
最新推荐文章于 2021-03-26 19:17:05 发布