結果
問題 | No.1862 Copy and Paste |
ユーザー |
![]() |
提出日時 | 2022-03-04 21:05:03 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 913 bytes |
コンパイル時間 | 1,962 ms |
コンパイル使用メモリ | 194,164 KB |
最終ジャッジ日時 | 2025-01-28 04:40:18 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 27 |
ソースコード
#include <bits/stdc++.h> using namespace std; long long intpow(long long a, long long b) { long long ans = 1; while(b) { if(b & 1) { ans *= a; } a *= a; b /= 2; } return ans; } long long kth_root(long long k,long long n) { if (n <= 1 || k == 1) return n; long long res = pow(n, 1.0 / k); while (intpow(res, k) > n) --res; while (intpow(res + 1, k) <= n) ++res; return res; } int main() { long long A,B,N; cin >> A >> B >> N; if(N == 1) { cout << 0 << endl; return 0; } long long ans = 1001001001001001001; for(int i = 1; i <= 31; i++) { long long a = kth_root(i,N),b = a+1; for(int j = 0; j <= i; j++) { if(intpow(a,j)*intpow(b,i-j) >= N) { ans = min(ans,(A+(a-1)*B)*j+(A+(b-1)*B)*(i-j)); } } } cout << ans << endl; }