这个高精度有点毒瘤吧,QAQ蒟蒻看不懂啊...
~~思路好像没问题,换个高精试试?~~
```cpp
//#define fre yes
#include <vector>
#include <cstdio>
#include <iostream>
#include <algorithm>
typedef std::pair<int, int> PII;
const int N = 1010;
PII ps[N];
int n;
std::vector<int> mul(std::vector<int> a, int b) {
std::vector<int> c;
int t = 0;
for (int i = 0; i < a.size(); i++) {
t += a[i] * b;
c.push_back(t % 10);
t /= 10;
}
while(t) {
c.push_back(t % 10), t /= 10;
} return c;
}
std::vector<int> div(std::vector<int> a, int b) {
std::vector<int> c;
bool is_Zero = false;
for (int i = a.size() - 1, t = 0; i >= 0; i--) {
t = t * 10 + a[i];
int x = t / b;
if(x || is_Zero) {
is_Zero = true;
c.push_back(x);
} t %= b;
} return std::vector<int>(c.rbegin(), c.rend());
}
std::vector<int> max_vec(std::vector<int> a, std::vector<int> b) {
if(a.size() > b.size()) return a;
if(a.size() < b.size()) return b;
if(std::vector<int>(a.rbegin(), a.rend()) > std::vector<int>(b.rbegin(), b.rend())) return a;
return b;
}
void output(std::vector<int> a) {
for (int i = a.size() - 1; i >= 0; i--) {
printf("%d", a[i]);
}
}
int main() {
scanf("%d", &n);
for (int i = 0, x, y; i <= n; i++) {
scanf("%d %d", &x, &y);
ps[i] = {x * y, x};
}
std::sort(ps + 1, ps + 1 + n);
std::vector<int> product(1, 1);
std::vector<int> res(1, 0);
for (int i = 0; i <= n; i++) {
if(i) res = max_vec(res, div(product, ps[i].first / ps[i].second));
product = mul(product, ps[i].second);
}
output(res);
return 0;
}
```
by Nicoppa @ 2019-05-09 14:46:47
@[HaloCat](/space/show?uid=206319) 谢谢_(:з」∠)_
by Stay_Foolish @ 2019-05-10 09:54:39