码迷,mamicode.com
首页 > 其他好文 > 详细

Kattis之旅——Rational Arithmetic

时间:2017-04-27 13:28:58      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:print   logs   turn   ace   orm   style   cout   contain   asi   

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 1Sample 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;
}

 

Kattis之旅——Rational Arithmetic

标签:print   logs   turn   ace   orm   style   cout   contain   asi   

原文地址:http://www.cnblogs.com/Asimple/p/6773648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!