結果
問題 |
No.3 ビットすごろく
|
ユーザー |
|
提出日時 | 2015-02-20 23:20:03 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 569 bytes |
コンパイル時間 | 401 ms |
コンパイル使用メモリ | 55,360 KB |
実行使用メモリ | 12,800 KB |
最終ジャッジ日時 | 2024-06-23 21:28:41 |
合計ジャッジ時間 | 6,318 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 2 WA * 1 RE * 30 |
ソースコード
#include <iostream> int n; bool dp[1001][10001]; int countBit(int x){ int ret = 0; while (x > 0){ if (x & 1)ret++; x >>= 1; } return ret; } void init(){ dp[0][1] = true; for (int i = 0; i < 1001; i++){ for (int j = 1; j <= n; j++){ if (dp[i][j]){ int cnt = countBit(j); if (j + cnt <= n)dp[i + 1][j + cnt] = true; if (j - cnt >= 1)dp[i + 1][j - cnt] = true; } } } } int main(){ std::cin >> n; init(); int ans = -1; for (int i = 1000; i >= 0; i--){ if (dp[i][n])ans = i + 1; } std::cout << ans << std::endl; return 0; }