https://www.acmicpc.net/problem/1110
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
<script>
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int a, b, c, origin, input;
int count = 0;
// while문을 몇번 반복한지를 계산할 변수
int d = -1;
/*
input(새로운 값)에 들어갈 변수, while문을 위해 0(false)이 아니고,
origin과 같으면 while문이 실행이 안되기에, 0 <= d <= 99 인 범위의 0이 아닌 값을 지정한다.
*/
scanf("%d", &input);
origin = input;
// 원본값을 알아야 끝이 나기에 원본값을 origin 변수에 저장해둔다.
while (d != origin) {
// 새로운 값 d가 원본값과 같지 않다면 반복하는 반복문
a = input / 10; // 10의자리 값
b = input % 10; // 1의자리 값
c = (a + b) % 10;
// 10의 자리와 1의 자리를 더한 후 가장 오른쪽(1의 자리)의 값
d = (b * 10) + c;
// b를 10의자리로, c를 1의 자리로 가지는 변수 d
input = d;
// d를 input(새로운 값)에 저장한다.
count++;
// while문이 1번 반복할때마다, 1씩 증가한다.
}
printf("%d", count);
return 0;
}
</script>