結果
問題 | No.1286 Stone Skipping |
ユーザー |
|
提出日時 | 2020-11-13 22:56:32 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 820 bytes |
コンパイル時間 | 213 ms |
コンパイル使用メモリ | 32,256 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 09:54:37 |
合計ジャッジ時間 | 1,030 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
#include<cstdio> long long power[55]; int main(){ long long n; scanf("%lld",&n); long long ans = n; for(int i = 0; (1ll<<i) <= ans; i++){ for(int j = 1; j <= i+1; j++){ for(int k = i; k >= 0; k--){ long long sum = 0; for(int l = 0; l < j; l++){ if(k-l<0) break; else sum += (1ll<<(k-l)); } power[k] = sum; } long long left = n; long long offer = 0; for(int k = i; k >= 0; k--){ if(left>=power[k]){ left -= power[k]; offer += (1ll<<k); } } if(left==0 && ans>offer) ans = offer; } } printf("%lld\n",ans); return 0; }