// ※計算ルール不明, 解答不能. // ※正解者様のソースから, 計算ルールを推定した. // https://yukicoder.me/submissions/317440 #include using namespace std; // test_01 などのWA対策. typedef long long LL; int main() { // 1. 入力情報取得. LL N1, N2; cin >> N1; LL A[N1]; for(int i = 0; i < N1; i++) cin >> A[i]; cin >> N2; LL B[N2]; for(int i = 0; i < N2; i++) cin >> B[i]; // 2. 既約分数 A / B を求める. // -> 以下のように読み替える???. // A1: A1, A2: 1 / A2, A3: 1 / A3, A4: 1 / A4, ... // B1: 1 / B1, B2: B2, B3: 1 / B3, B4: B4, ... LL mol = A[0], den = B[0]; for(int i = 1; i < N1; i++) den *= A[i]; for(int i = 1; i < N2; i++){ if(i % 2 == 0) den *= B[i]; else mol *= B[i]; } // 3. 最大公約数を計算し, 約分. LL gcd = __gcd(mol, den); mol /= gcd, den /= gcd; // 4. マイナスは, 分子に寄せる? // ex. // 4 // 1 3 5 7 // 5 // 2 4 6 8 9 // -> 8 2835 ??? // -> 計算ルールが, よく分からん. // test_08 などのWA対策. if(den < 0) mol *= -1, den *= -1; // 5. 出力. cout << mol << " " << den << endl; return 0; }