2019牛客暑期多校训练营(第一场)J-Fraction Comparision
原题地址:https://ac.nowcoder.com/acm/contest/881/J
思路:
1、这道题数据很大,所以直接交叉相乘肯定是不行的,但是可以分为两部分来做,整数部分和余数部分。
2、先比较整数部分,当然,整数部分大的肯定整个分数就大,整数部分小的肯定整个分数就小。
3、如果两个分数的整数部分相等,剩下的就是要来比较余数部分,余部部分除以分母,其实就是相当于带数减去相同的整数后剩下的真分数部分,这时交叉相乘就可以了。
代码如下:
#include <bits/stdc++.h> //万能头文件
using namespace std;
long long x,a,y,b;
int main()
{
while(scanf("%lld%lld%lld%lld",&x,&a,&y,&b)!=EOF)
{
if(x/a>y/b)
printf(">\n");
else if(x/a<y/b)
printf("<\n");
else //整数部分相等的情况
{
if(x%a*b>y%b*a) //取余数部分再交叉相乘
printf(">\n");
else if(x%a*b<y%b*a)
printf("<\n");
else
printf("=\n");
}
}
return 0;
}