蒟蒻求助 没发现什么问题

P1080 [NOIP2012 提高组] 国王游戏

这个高精度有点毒瘤吧,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


|