萌新第一天学C艹,爆零求调(悬关*2)
查看原帖
萌新第一天学C艹,爆零求调(悬关*2)
660871
2011Andy楼主2023/9/29 16:49
#include <bits/stdc++.h>
using namespace std;
int gcd(int a , int b){
    return b == 0 ? a : gcd(b , a % b);
}
int gcb(int a , int b){
    return b == 0 ? a : a * b / gcd(b , a % b);
}
const int N = 1e3 + 5;
char f;
int A , B; 
int n;
int a[N] , b[N] , c[N];
int main(){
    cin >> n;
    for(int i = 1 ; i <= n ; i++){
        cin >> a[i] >> b[i] >> c[i];
        if(i == 1){
            A = a[i];
            B = b[i];
            if(c[i] != 1) f = '-'; 
            int j = gcb(A , B);
            A /= j , B /= j; 
        }
        else{
            int h = gcd(B , b[i]);
            B = h , b[i] = h;
            A *= B / h , a[i] *= b[i] / h;
            if(c[i] == 1) A += a[i];
            else if(c[i] == 2){
                if(A >= a[i]) A -= a[i];
                else if(A < a[i]){
                    A = a[i] - A;
                    f = '-';
                }
            }
            int k = gcb(A , B);
            A /= k , B /= k;
        }
    }
    if(A == B){
        if(A != 0) cout << 1;
        else cout << 0;
    }
    else if(f != '-'){
        if(B == 1) cout << A;
        else cout << A << "/" << B;
    }
    else{
        if(B == 1) cout << f << A;
        else cout << f << A << "/" << B;
    }
	return 0;
}

萌新去高原地区旅游了,有点高反(思路不太清晰

2023/9/29 16:49
加载中...