Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
37042 | 申东铉 | 【S】T1 | C++ | 通过 | 100 | 713 MS | 244 KB | 834 | 2025-03-02 14:12:09 |
#include <bits/stdc++.h> #define int long long using namespace std; int id,T; int m,a1,a2,b1,b2; int a[114]; inline int k (int x) { if (x < 0) { return 1e18; } int r = 0; for (int i = 0;i < 63;i++) { if ((1ll << i) & x) { r += a2 + b2 * i; } } return r; } signed main () { int n = 0; for (int k = 1,x = 1;x <= 1e18;k++,x *= k) { a[k] = x; n++; } cin >> id >> T; while (T--) { cin >> m >> a1 >> b1 >> a2 >> b2; int ans = 1e18; for (int i = 0;i < (1ll << n);i++) { int x = 0,y = 0; for (int j = 0;j < n;j++) { if (i & (1ll << j)) { x += a[j + 1]; y += a1 + b1 * (j + 1); } } if (((i & 1) && ((m - x) & 1)) || ((i & 2) && ((m - x) & 2))) { continue; } ans = min(ans,k(m - x) + y); } cout << ans << endl; } return 0; }