求助#WA 43
查看原帖
求助#WA 43
637788
kimi0705楼主2023/6/22 15:24
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct frac {
	int a, b; // 分子;分母
	friend frac operator + (frac a, frac b) {
		frac c;
		c.b = a.b * b.b;
		c.a = a.a * b.b + b.a * a.b;
		int G = __gcd(c.a, c.b);
		c.a /= G;
		c.b /= G;
		return c;
	}
	friend frac operator / (frac a, frac b) {
		frac c;
		c.a = a.a * b.b;
		c.b = a.b * b.a;
		int G = __gcd(c.a, c.b);
		c.a /= G;
		c.b /= G;
		return c;
	}
	friend bool operator == (frac a, frac b) {
		return (a.a == b.a && a.b == b.b);
	}
};
const frac frac0 = {0, 1};
signed main() {
	int n;
	frac k, ans;
	cin >> k.a >> k.b >> n;
	vector <int> a(n + 1);
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	ans.b = 1;
	ans.a = a[n];
	for (int i = n - 1; i >= 1; i--) {
		swap(ans.a, ans.b);
		frac t;
		t.a = a[i];
		t.b = 1;
		ans = ans + t;
	}
	k = k + frac0;
	if(k == ans) cout << "YES\n";
	else cout << "NO\n";
}
2023/6/22 15:24
加载中...