https://www.acmicpc.net/problem/3071처음엔 어떻게 할지 잘 생각이 나지 않았다.고민하다가 그냥 3진법으로 나타내 봤는데 규칙이 보였다. 위의 예시로 나온 수를 3진법으로 나타내면1 = 12 = 23 = 104 = 115 = 126 = 202048 = 2210212이렇게 된다. 3^0의자리부터 시작해서 값이 2인 곳이 있으면 3을 빼고그 다음 자리(이 경우 3^1)에 +1을 더해주면 위의 규칙과 같은 결과가 나온다는 것을 발견했다. 음수의 경우 abs(n)을 통해 절댓값으로 먼저 새로운 진법을 계산해준뒤 -1은 1로, 1은 -1로 바꿔서 출력해주면 정답을 받을 수 있다. -1의 경우에는 -로 출력해야 함에 유의한다.
https://www.acmicpc.net/problem/27436 우선 규칙을 찾아야 하는데 주어진 이미지를 보면 1의 위치에서 1칸 떨어져있으면 1+ 6*1내의 범위2칸 떨어져있으면 1+6*1 + 6*2 내의 범위3칸 떨어져있으면 1+6*(1+2+3) 내의 범위.x칸 떨어져있으면 1+6*(1+2+3+...+x) 내의 범위이런 식으로 규칙성을 띈다는 것을 알 수 있다. 이를 통해 우리는 n이 주어졌을때n 1을 더해주는 이유는 경로에 시작하는 위치인 1번방도 포함되기 때문이다. 우선 1~x까지의 합을 간단한 식으로 나타내면x(x+1)/2이다이 식을 대입하면n n 이때 x를 브루트포스와 같이 1에서부터 하나씩 대입하는 방법으로는 시간초과를 받게된다. 이분 탐색을 이용하면 시간내에 값을 구할 수 있다...