题目大意:给你显示器屏幕的比例(a:b)和你要看电影的比例(c:d),求调整后剩下的没有到的区域和总面积的比例。
题目分析:在做虚拟赛的时候,对自己的想法不是很确定,能否AC。在提交WA后,就果断放弃了。第二天在做的时候发现是自己特例没想到。虽说我的想法很笨拙,但是还是能AC的。反正就是定长比宽,或者是定宽比长。
下面是代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int gcd(int a,int b)
{
return b == 0 ? a : gcd(b,a%b);
}
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int g1 ,g2;
g1 = gcd(a,b);
g2 = gcd(c,d);
if(g1 != 1) a /= g1,b /= g1;
if(g2 != 1) c /= g2,d /= g2;
if(a == b) a = 1,b = 1;
if(c == d) c = 1,d = 1;
double t1 = (double)a/b;
double t2 = (double)c/d;
//printf("%lf\n",t1);
// printf("%lf\n",t2);
int com;
if(t1 < t2)
{
g1 = gcd(a,c);
com = (a * c)/g1/a;
b = b*com;
com = (a*c)/g1/c;
d = d*com;
g1 = gcd(b,d);
b /= g1;
d /= g1;
printf("%d/%d\n",(b-d),b);
}
else if(t1 > t2)
{
g2 = gcd(b,d);
com = (b*d)/g2/b;
a = a * com;
com = (b*d)/g2/d;
c = c * com;
g2 = gcd(a,c);
a /= g2;
c /= g2;
printf("%d/%d\n",(a-c),a);
}
else printf("0/1\n");
return 0;
}
PS:代码写的很戳....