結果
問題 |
No.3 ビットすごろく
|
ユーザー |
![]() |
提出日時 | 2020-08-31 07:02:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 16 ms / 5,000 ms |
コード長 | 453 bytes |
コンパイル時間 | 885 ms |
コンパイル使用メモリ | 79,020 KB |
最終ジャッジ日時 | 2025-01-14 02:17:09 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
#include <iostream> #include <vector> #include <queue> using namespace std; vector<int> d = {-1, 1}; int main(){ int N; cin >> N; vector<int> d(N + 1, -1); d[1] = 1; queue<int> Q; Q.push(1); while (!Q.empty()){ int v = Q.front(); Q.pop(); for (int i = 0; i < 2; i++){ int w = v + __builtin_popcount(v) * d[i]; if (1 <= w && w <= N){ if (d[w] == -1){ d[w] = d[v] + 1; Q.push(w); } } } } cout << d[N] << endl; }