Collatz Problem [AtCoder Beginner Contest 116 B]
問題文がわかりづらいので整理します。
①初項sが与えられる
②第n項を、第n-1項(Aとする)が偶数ならばA/2、奇数ならば3*A+1として求めていく
③このようにして項を順に求めていったとき、最初に要素の重複が起こるのは第何項か
というふうに単純化します。
//ABC116-B import java.util.*; class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int s = sc.nextInt(); HashSet<Integer> set = new HashSet<>(); set.add(s); for (int i=2; i<1000001; i++) { if (s%2 == 0) { s /= 2; } else { s = 3*s + 1; } if (set.add(s) == false) { System.out.println(i); return; } set.add(s); } } }