https://atcoder.jp/contests/abc116/tasks/abc116_b
解説
https://atcoder.jp/contests/abc116/submissions/4059362
シミュレーションをしよう。
ある数が以前に出ていたかを判定するにはsetを使うといい。
以前に出たことある数が出たら、その番号を答える。
int S; //--------------------------------------------------------------------------------------------------- void _main() { cin >> S; set<int> done; done.insert(S); int cur = S; rep(id, 2, 1010101) { int nxt; if (cur % 2 == 0) nxt = cur / 2; else nxt = 3 * cur + 1; if (done.count(nxt)) { printf("%d\n", id); return; } done.insert(nxt); cur = nxt; } }