結果
問題 | No.1862 Copy and Paste |
ユーザー |
![]() |
提出日時 | 2024-11-13 21:58:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,274 bytes |
コンパイル時間 | 799 ms |
コンパイル使用メモリ | 72,236 KB |
実行使用メモリ | 13,636 KB |
最終ジャッジ日時 | 2024-11-13 21:59:01 |
合計ジャッジ時間 | 4,902 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 4 WA * 1 TLE * 1 -- * 21 |
ソースコード
#include <iostream>#include <cstdint>#include <algorithm>#include <cmath>using namespace std;const int MAXN = 1e5 + 10; // 55ptsconst int64_t INF = 1e18;int64_t f[MAXN];int k_v[MAXN];int64_t fstpow(int a, int k){if (k == 0)return 1;if (k == 1)return a;int64_t tmp = fstpow(a, k / 2);if (tmp < 0)return -1;if (k % 2 == 0)return tmp * tmp;elsereturn tmp * tmp * a;}int64_t rpow(int64_t a, int64_t k){int64_t l = 1, r = a;while (l < r){int64_t mid = (l + r) / 2;int64_t t = fstpow(mid, k);if (t < a && t > 0)l = mid + 1;elser = mid;}return l;}int main(){// freopen("dice.in", "r", stdin);// freopen("dice.out", "w", stdout);int64_t n, x, y;// cin >> n >> x >> y;int64_t ans = INF;cin >> x >> y >> n;n -= 1;for (int i = 1; (1 << i) < n * 2; ++i){int64_t v = rpow(n, i);int64_t lst = fstpow(v, i - 1);int64_t now = i * x + (i - 1) * y * (v - 1) + ((int64_t)floor((double)n / lst)) * y;cerr << "dbg: " << i << " " << v << " " << now << "\n";ans = min(ans, now);}cout << ans << "\n";return 0;}