J.Fraction Comparision
一道简单()的数学计算题,最开始机智的我就想到了直接除是不可以的!于是我想到了交叉相乘法,于是wa了一发,于是又仔细想了一下,发现是高精度的问题,1e18*1
e10超了1e27,于是想到了整数和小数分开来判断的方法,即先用x/a,y/b判断整数部分的大小,如果大了或者小了就直接输出,如果相等则接着判断小数,小数也是分数,即余数除以除数,然后使用交叉相乘法即可完成判断
下附代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
unsigned long long x,y,a,b;
while(cin>>x>>a>>y>>b)
{
if(x/a>y/b)
cout<<">"<<endl;
else if(x/a<y/b)
cout<<"<"<<endl;
else {
if((x%a)*b<(y%b)*a)
cout<<"<"<<endl;
else if((x%a)*b>(y%b)*a)
cout<<">"<<endl;
else cout<<"="<<endl;
}
}
}

京公网安备 11010502036488号