작성일 :

문제 링크

14920번 - 3n+1 수열

설명

주어진 규칙에 따라 수열을 만들 때, 처음으로 1이 되는 항 번호를 구하는 문제입니다.


접근법

짝수이면 2로 나누고, 홀수이면 3을 곱하고 1을 더합니다.

첫 번째 항부터 시작해서 값이 1이 될 때까지 이 규칙을 반복합니다.

몇 번째 항에서 1이 되는지 세면 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var cnt = 1;
    while (n != 1) {
      cnt++;
      if ((n & 1) == 0) n /= 2;
      else n = 3 * n + 1;
    }
    Console.WriteLine(cnt);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  int cnt = 1;
  while (n != 1) {
    ++cnt;
    if (n % 2 == 0) n /= 2;
    else n = 3 * n + 1;
  }
  cout << cnt << "\n";

  return 0;
}