分式比较大小
牛客上的题目如下![在这里插入图片描述](https://img-blog.csdnimg.cn/20190721224751601.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzkwNDgz,size_16,color_FFFFFF,t_70)
因为x,y最大已经到10^18,所以直接交叉相乘比较会爆long long ,所以行不通
可以先将x/a转化成的形式,即整数部分加小数部分。
先比较整数部分,如果整数部分不相等,则直接比较小数部分即可;如果整数部分相等,则小数部分通分后比较大小即可。
代码如下:
#include<bits/stdc++.h>
typedef long long ll;
void cmp(ll x,ll y){
if(x==y) printf("=\n");
else if(x<y) printf("<\n");
else printf(">\n");
}
int main()
{
ll x,a,y,b;
scanf("%lld%lld%lld%lld",&x,&a,&y,&b);
ll x1=x/a,y1=y/b;
ll r1=x%a,r2=y%b;
if(x1!=y1) cmp(x1,y1);
else cmp(r1*b,r2*a);
return 0;
}