Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
169935 | C班 郑筱橦 | 国王游戏 | C++ | 通过 | 100 | 8 MS | 280 KB | 1054 | 2024-08-20 20:26:43 |
#include<bits/stdc++.h> #define ll long long using namespace std; int n; int len = 1; int sum[100001] = {0,1}; struct minister{ ll left; ll right; } m[1000001]; bool cmp(minister a,minister b){ return a.left * a.right < b.left * b.right; } void multiplicative(ll x){ for(int i = 1;i <= len; i++){ sum[i] *= x; } for(int i = 1;i <= len; i++){ sum[i + 1] += sum[i] / 10; sum[i] %= 10; } len++; while(sum[len] / 10){ sum[len + 1] = sum[len] / 10; sum[len] %= 10; len++; } if(sum[len] == 0) len--; } void division(){ for(int i = len; i >= 1; i--){ sum[i - 1] += (sum[i] % m[n].right * 10); sum[i] /= m[n].right; } while(!sum[len]){ len--; } if(len == 0) cout << "1" << endl; } int main(){ cin >> n; cin >> m[0].left >> m[0].right; for(int i = 1;i <= n; i++) cin >> m[i].left >> m[i].right; sort(m + 1, m + 1 + n, cmp); for(int i = 0;i < n; i++){ multiplicative(m[i].left); } division(); for(int i = len; i >= 1; i--) cout << sum[i]; return 0; }