Kattis之旅——Rational Arithmetic

Input

The first line of input contains one integer, giving the number of operations to perform.

Then follow the operations, one per line, each of the form x1 y1 op x2 y2. Here, −109≤x1,y1,x2,y2<109 are integers, indicating that the operands are x1/y1 and x2/y2. The operator op is one of ’+’, ’−’, ’∗’, ’/’, indicating which operation to perform.

You may assume that y1≠0, y2≠0, and that x2≠0 for division operations.

Output

For each operation in each test case, output the result of performing the indicated operation, in shortest terms, in the form indicated.

 

Sample Input 1 Sample Output 1
4
1 3 + 1 2
1 3 - 1 2
123 287 / 81 -82
12 -3 * -1 -1
5 / 6
-1 / 6
-82 / 189
-4 / 1

题目不解释了,看样例也能懂。

注意用long long。

 //Asimple
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, s, res, ans, len, T, k, num;
ll a, b, c, d;
char ch;

ll gcd(ll a, ll b ) {
    return b==0?a:gcd(b, a%b);
}

void print(ll num, ll den){
    bool pos = (num>0 && den>0) || (num<0 && den<0);
    if (num<0) num = -num;
    if (den<0) den = -den;
    ll d = gcd(num,den);
    num /= d , den /= d;
    if (num==0 || den==0) cout << "0 / 1" << endl;
    else cout << (pos?"":"-") << num << " / " << den << endl;
}

void add_sub(ll x1, ll y1, ll x2, ll y2, int state){
    ll num = x1*y2 + state*x2*y1;
    ll den = y1*y2;
    print(num,den);
}

void mul(ll x1, ll y1, ll x2, ll y2){
    ll num = x1*x2;
    ll den = y1*y2;
    print(num,den);
}

void input() {
    cin >> T;
    while( T -- ) {
        cin >> a >> b >> ch >> c >> d;
        switch(ch){
            case '+':
                add_sub(a, b, c, d,1);
                break;
            case '-':
                add_sub(a, b, c, d, -1);
                break;
            case '*':
                mul(a, b, c, d);
                break;
            case '/':
                mul(a, b, d, c);
                break;
        }
    }
}

int main(){
    input();
    return 0;
}

 

全部评论

相关推荐

点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:37
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务