其他分享
首页 > 其他分享> > 国王游戏

国王游戏

作者:互联网

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 1010;
 4 int n;
 5 typedef pair<int, int> PII;
 6 PII ps[N]; //peoples
 7 vector<int> mul(vector<int> a, int b) { //大整数a乘以一个小整数b
 8     vector<int> c;
 9     int t = 0;
10     for (int i = 0; i < a.size(); i++) {
11         t += a[i] * b;
12         c.push_back(t % 10);
13         t /= 10;
14     }
15     while (t) {
16         c.push_back(t % 10);
17         t /= 10;
18     }
19     return c;
20 }
21 vector<int> div(vector<int> a, int b) { //大整数a除以一个小整数b
22     vector<int> c;
23     bool is_first = false; //为了避免商有很多个0
24     //表示前面是否已经有非零位了
25     int t = 0;
26     for (int i = a.size() - 1; i >= 0; i--) {
27         t = t * 10 + a[i];
28         int x = t / b;
29         if (x || is_first) {
30             is_first = true;
31             c.push_back(x);
32         }
33         t %= b;
34     }
35     reverse(c.begin(), c.end());
36     return c;
37 }
38 vector<int> max_vec(vector<int> a, vector<int> b) { //vector的max函数
39     if (a.size() > b.size()) {
40         return a;
41     }
42     if (a.size() < b.size()) {
43         return b;
44     }
45     for (int i = a.size() - 1; i >= 0; i--) {
46         if (a[i] > b[i]) {
47             return a;
48         } else if (a[i] < b[i]) {
49             return b;
50         }
51     }
52     return a;
53 }
54 void output(vector<int> a) {
55     for (int i = a.size() - 1; i >= 0; i--) {
56         cout << a[i];
57     }
58     cout << endl;
59 }
60 int main() {
61     cin >> n;
62     for (int i = 0; i <= n; i++) { //存储所有人信息
63         int a, b;
64         cin >> a >> b;
65         ps[i] = {a * b, a};
66     }
67     sort(ps + 1, ps + 1 + n);
68     vector<int> A; //存储那个大整数
69     A.push_back(1);
70     vector<int> res; //存储答案
71     res.push_back(0);
72     for (int i = 0; i <= n; i++) { //开始遍历
73         if (i) { //国王不会给自己发奖励,从1开始才会更新答案
74             res = max_vec(res, div(A, ps[i].first / ps[i].second));
75         }
76         A = mul(A, ps[i].second);
77     }
78     output(res);
79     return 0;
80 }

 

标签:10,return,游戏,int,back,vector,国王,size
来源: https://www.cnblogs.com/fx1998/p/13978898.html