求助
查看原帖
求助
1424799
lzx0616楼主2025/1/12 08:32
#include <bits/stdc++.h>
using namespace std;
#define maxn 100010
#define ll long long
struct node {
	int a, b;
}s[1009];
int n;
bool cmp(node s1, node s2) {
	return s1.a * s1.b < s2.a * s2.b;
}
ll ans[maxn], mixn[maxn], chen[maxn] = {1, 1};
int cheng(int x) {
	int t = 0;
	for (int i = 1; i <= chen[0]; i++) {
		chen[i] = chen[i] * x + t;
		t = chen[i] / 10;
		chen[i] %= 10;
		if (t > 0 && i >= chen[0])
			chen[0]++;
	}
}
int chu(int y) {
	int t = 0, flag = 1;
	memset(ans, 0, sizeof(ans));
	for (int i = chen[0]; i > 0; i--) {
		ans[i] = (chen[i] + t * 10) / y;
		t = (chen[i] + t * 10) % y;
		if (ans[i] && flag) {
			ans[0] = i;
			flag = 0;
		}
	}
}
bool bijiao(ll a[], ll b[]) {
	if (a[0] < b[0])
		return true;
	if (a[0] > b[0])
		return false;
	for (int i = b[0]; i > 0; i--) {
		if (a[i] < b[i])
			return true;
		if (a[i] > b[i])
			return false;
	}
	return false;
}
void print(ll m[]) {
	int i = m[0];
	while (m[i] == 0 && i > 0)
		i--;
	for (; i > 0; i--)
		cout << m[i];
	cout << "\n"; 
}
int main() {
	cin >> n;
	for (int i = 0; i <= n; i++)
		cin >> s[i].a >> s[i].b;
	sort(s + 1, s + 1 + n, cmp);
	for (int i = 0; i < n; i++) {
		cheng(s[i].a);
		chu(s[i + 1].b);
		if (bijiao(mixn, ans))
			memcpy(mixn, ans, sizeof(ans));
	}
	print(mixn);
}
2025/1/12 08:32
加载中...