문제
0보다 크거나 같고, 99보다 작거나 같은 정수를 두 자리로 쓴 후(10보다 작은 자연수는 앞에 0을 붙임)에 로 시작한다. 두 자리수를 더한다. 그럼, 처음 숫자의 가장 오른쪽 자리수와 앞에서 구한 합의 가장 오른쪽 자리수를 이어 붙이면 새로운 숫자를 만들 수 있다. 이것을 계속 하다 보면, 원래 숫자를 얻을 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 숫자는 68이다. 6+8 = 14이다. 새로운 숫자는 84이다. 8+4 = 12이다. 새로운 숫자는 42이다. 4+2 = 6이다. 새로운 숫자는 26이다.
위의 예는 4번만에 원래 숫자로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
그냥 수학적 문제...
좀만 생각하면 풀 수 있습니다. 아자아자 화이팅!!
import java.util.Scanner; //https://www.acmicpc.net/problem/1110
public class PlusCycle { static int result; static int initData; static int changeData; public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); initData = Integer.parseInt(scan.nextLine().trim()); result = 0; changeData = initData; while (true) { int a = changeData / 10; int b = changeData % 10; result++; changeData = (b * 10) + ((a + b) % 10); if (changeData == initData) { System.out.println(result); break; } } } }
'알고리즘 및 자료구조 > 문제' 카테고리의 다른 글
algospot Koogle (0) | 2016.04.18 |
---|---|
백준알고리즘 4435번 중간계 전쟁 (0) | 2016.04.05 |
algospot 조세푸스(JOSEPHUS) (2) | 2016.03.28 |
백준알고리즘 10799번 쇠막대기 (0) | 2016.03.24 |
algospot 괄호2(Mismatched Brackets) (0) | 2016.03.23 |